Android不尊重颜色!

Android不尊重颜色!,android,bitmap,Android,Bitmap,试图调整存储在SD卡上的图像大小时,我注意到原来的颜色被改变了。BitmapFactory.decodeFile对此负责。下面是一个演示代码: private void testImage() throws Exception{ BitmapFactory.Options o = new BitmapFactory.Options(); o.inDither = false; o.inPreferredConfig = Bitmap.Config.ARGB_8888;

试图调整存储在SD卡上的图像大小时,我注意到原来的颜色被改变了。BitmapFactory.decodeFile对此负责。下面是一个演示代码:

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"));
}
结果图像(original.jpg、result.jpg、result.png):


你可以看到,在两张生成的图像上,男孩的皮肤有点绿。解决这个问题有什么建议吗?

你怎么知道你原来的颜色不是绿色的

您的相机/电脑可能已正确显示图片,因为它们正确应用了相机的颜色配置文件。你的代码显然没有


有问题吗?试着在你的相机/电脑以外的其他设备上查看图片。

FWIW,这三张图片看起来和我一样。我真的看不出你的pngFWIW有什么不同,我看到后两张图片与前两张有什么不同:)我也是,在使用Firefox 3.6的Ubuntu上。我会尝试找到一张显示明显变化的图片。但是等着看吧,你可以保存图像1和2,并用图像查看器在其中一个和另一个之间切换。区别将更加明显。我试图展示的区别是“original.jpg”和“result.*”之间的区别。虽然并排看不到,但如果尝试使用图像查看器在图像之间切换,就会变得很明显。