2010-12-15 29 views
6

Tratando de cambiar el tamaño de las imágenes almacenadas en mi tarjeta sd, noté que los colores originales estaban alterados. Parece que BitmapFactory.decodeFile es responsable de esto. Aquí es un código de demostración:¡Android no respeta los colores!

private void testImage() throws Exception{ 
    BitmapFactory.Options o = new BitmapFactory.Options(); 
    o.inDither = false; 
    o.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    o.inScaled = false; 
    Bitmap b = BitmapFactory.decodeFile("/sdcard/test/original.jpg", o); 
    b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream("/sdcard/test/result.jpg")); 
    b.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream("/sdcard/test/result.png")); 
} 

imágenes resultantes (original.jpg, result.jpg, result.png):

alt textalt textalt text

Ha se puede ver, la piel del niño es un poco verde en las 2 imágenes resultantes. ¿Algún consejo para resolver este problema?

+0

FWIW, las tres imágenes se ven idénticas a mí. – CommonsWare

+0

Realmente no veo una diferencia en su png – schwiz

+0

FWIW, veo una diferencia en los segundos dos en comparación con el primero :) –

Respuesta

1

¿Cómo sabes que los colores originales no eran verdosos?

Su cámara/PC puede haber mostrado la imagen correcta porque aplicaron correctamente el perfil de color de la cámara. Tu código obviamente no.

¿Podría ser el problema? Intente ver la imagen en otro dispositivo que no sea su cámara/PC.

+0

La diferencia que intento mostrar es entre "original.jpg" y "result. *". No tan visible uno al lado del otro, pero intente cambiar de imagen con un visor de imágenes, se vuelve obvio. –

Cuestiones relacionadas