2012-06-06 11 views
6

Sto provando a comprimere la foto scattata dalla fotocamera in Android. Ma il colore dell'immagine è cambiato quando è stato compresso da Bitmap.CompressFormat.JPEG. Come posso risolvere questo problema? GraziePerché il colore dell'immagine è cambiato quando è stato compresso da Bitmap.CompressFormat.JPEG

Ho inserito alcune immagini di esempio generate dal mio codice. Puoi vedere che il colore della carta sulla parte superiore delle immagini è diverso.

Ecco il frammento di codice: original
Questo è 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); 

Questa immagine originale è jpg
Questo è PNG: png

+0

Dove cambia il colore? Non riesco a vederlo ad occhio nudo. Si tratta solo di artefatti di compressione JPEG? –

+0

Quello centrale è diverso dagli altri. Vedo che la carta sull'immagine è un po 'verde. –

risposta

0

JPEG è un formato lossy compression e potrebbe esserci una perdita di informazioni sull'immagine durante la compressione. Il sacrificio delle informazioni dell'immagine originale è fatto per un migliore rapporto di compressione (risultante in un file più piccolo).

Tuttavia, se ciò non è accettabile per voi, è necessario utilizzare uno dei metodi di compressione lossless che include lo PNG.

+0

Sì, JPEG è una compressione con perdita di dati. Ma Bitmap.CompressFormat.JPEG cambia il colore dell'immagine. Faccio la stessa compressione in Photoshop, il colore rimane lo stesso. Mi chiedo cosa ho perso nel codice. –

Problemi correlati