2010-12-15 70 views
6

试图调整存储在我的SD卡上的图像大小,我注意到原来的颜色被改变了。它接缝BitmapFactory.decodeFile是可以响应的。这里是一个演示代码:Android不尊重色彩!

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

alt textalt textalt text

已经可以看到,男孩的皮肤在2个结果图像上有点绿色。任何提示解决这个问题?

+0

FWIW,这三个图像看起来和我完全一样。 – CommonsWare 2010-12-15 15:21:14

+0

我真的没有看到你的png – schwiz 2010-12-15 15:22:09

+0

FWIW有什么不同,我看到第二个和第一个相比有所不同:) – 2010-12-15 15:35:59

回答

1

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

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

问题可以在那里吗?尝试查看除相机/ PC之外的其他设备上的图片。

+0

我试图展示的区别在于“original.jpg”和“result。*”之间。并非如此可见,而是尝试在图像查看器之间切换图像,这变得很明显。 – 2010-12-15 16:18:19