2012-06-06 4 views
6

Androidでカメラで撮影した写真を圧縮しようとしています。しかし、画像の色はBitmap.CompressFormat.JPEGで圧縮したときに変更されました。どうすればこの問題を解決できますか?ありがとうBitmap.CompressFormat.JPEGで圧縮したときに画像の色が変わる理由

私は自分のコードから生成されたいくつかのサンプル画像を入れました。あなたは画像の上部にある紙の色が違っているのを見ることができます。ここ

は、コードスニペットである:

Bitmap bitmap = BitmapFactory.decodeFile(Common.FOLDER_PATH + "pic.jpg"); 

FileOutputStream stream2 = new FileOutputStream(Common.FOLDER_PATH + "pic100.jpg");   
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream2); 

FileOutputStream stream3 = new FileOutputStream(Common.FOLDER_PATH + "pic100.png");   
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream3); 

これは、元の画像である。 original
これはJPEGである: jpg
これはPNGである: png

+0

色の変化はどこですか?私は肉眼で見ることができません。それはちょうどJPEG圧縮成果物についてですか? –

+0

中間のものは他のものとは異なります。私は画像上の紙が少し緑色であることがわかります。 –

答えて

0

JPEGlossy compressionフォーマットであり、圧縮中に画像情報が失われる可能性があります。元の画像情報を犠牲にすることは、より良い圧縮率のために行われ(その結果、ファイルが小さくなる)

ただし、これが受け入れられない場合は、PNGを含む可逆圧縮方法のいずれかを使用する必要があります。

+0

はい、JPEGはロッシー圧縮です。しかし、Bitmap.CompressFormat.JPEGは画像の色を変更します。私はPhotoshopで同じ圧縮を行い、色は変わりません。私はコードで何が欠けているのだろうかと思います。 –