2012-06-06 3 views
6

komprimiert Ich versuche, das Foto von der Kamera in Android komprimiert zu komprimieren. Die Farbe des Bildes änderte sich jedoch, als es von Bitmap.CompressFormat.JPEG komprimiert wurde. Wie kann ich dieses Problem lösen? DankeWarum die Farbe des Bildes geändert, wenn es von Bitmap.CompressFormat.JPEG

Ich habe einige Beispielbilder gelegt, die von meinem Code erzeugten. Sie können sehen, dass die Farbe des Papiers oben auf den Bildern unterschiedlich ist. Hier

ist der Code-Schnipsel:

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); 

Dies ist Original-Bild: original
Dies ist JPEG: jpg
Dies ist PNG: png

+0

Wo ändert sich die Farbe? Ich kann es nicht mit bloßem Auge sehen. Geht es nur um JPEG-Kompressionsartefakte? –

+0

Die mittlere unterscheidet sich von anderen. Ich kann sehen, dass das Papier auf dem Bild ein wenig grün ist. –

Antwort

0

JPEG ist ein lossy compression Format und Während der Komprimierung kann Bildinformation verloren gehen. Die Opferung der ursprünglichen Bildinformation erfolgt für ein besseres Komprimierungsverhältnis (was zu einer kleineren Datei führt). Wenn dies für Sie nicht akzeptabel ist, sollten Sie eine der verlustfreien Komprimierungsmethoden verwenden, die die PNG enthält.

+0

Ja, JPEG ist eine verlustbehaftete Komprimierung. Bitmap.CompressFormat.JPEG ändert jedoch die Farbe des Bildes. Ich mache die gleiche Komprimierung in Photoshop, die Farbe bleibt gleich. Ich frage mich, was ich im Code verpasst habe. –

Verwandte Themen