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):
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?
FWIW, las tres imágenes se ven idénticas a mí. – CommonsWare
Realmente no veo una diferencia en su png – schwiz
FWIW, veo una diferencia en los segundos dos en comparación con el primero :) –