1
我正在通過BitmapFactory加載jpeg文件並嘗試再次保存它(後來我想在再次保存它之前對像素數據進行一些計算)。在Android中保存JPEG文件,不丟失像素信息
但是,如果我試圖把它與
FileOutputStream fos = new FileOutputStream(new File("/sdcard/test.jpg"));
originalImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);
保存那麼它是不完全一樣的結果作爲原始圖片。某些像素具有不同的顏色值,這對我以後的計算沒有用。
是否有可能安全無損?或者是我在加載圖片時出現問題
Bitmap originalImage = BitmapFactory.decodeFile("/sdcard/input.jpg");
之前幾行?
好吧,但是當我在一個普通的項目中用Java進行嘗試時,我會用'BufferedImage originalImage = ImageIO.read(new File(「input.jpg」))來做到這一點。 ImageIO.write(originalImage,「jpg」,new File(「test.jpg」));'這將無損。可悲的是,Android不支持ImageIO,但是沒有辦法像這樣做嗎? – Steve 2012-02-08 15:18:46
如果您不希望像素值發生變化,請使用像PNG這樣的無損壓縮 – BitBank 2012-02-08 15:22:53
不幸的是,並不能保證* x = compressJpeg(decompressJpeg(x))*適用於所有* x *。 (對* x *的一些值和一些jpeg-algoritms,它*可能顯然是這種情況,但不應該依賴它。)正如BitBank所說,使用PNG(或BMP)進行無損圖像存儲。 – aioobe 2012-02-08 15:58:10