我的应用中有一些.png文件。我需要在运行时加载这些,并从中获取某些像素的确切颜色。重要的是,我不想缩放这些图片。我没有直接在UI上显示它们,它们用作地图。
现在,在Android 1.5上,没有问题。我将这些图像放在'/ res / drawable'目录中,使用BitmapFactory将它们加载到Bitmap对象中,并使用它来获取所需像素的颜色。例如。像素(100,50)具有RGB(100,1,100)颜色。
在Android 2.2上,相同的程序会产生不同的颜色(对于相同的像素),所以我得到相同的RGB(99,3,102)/ RGB(101,2,99)/等(100, 50)像素。我检查了Bitmap对象的分辨率,似乎没有得到缩放。
有人可以解释一下,为什么我的颜色值会变形?
答案 0 :(得分:2)
解决:看来,在Android 2.2上,我必须设置正确的位图配置。不知何故,2.2以下的版本设法做到这一点(或者可能支持更少的配置,并且系统正确猜测配置,不知道)。
无论如何,这是我现在使用的代码:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDither=false;
opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap mask = BitmapFactory.decodeResource(getResources(), R.drawable.picture, opt);
答案 1 :(得分:1)
去做一个与所讨论像素颜色完全相同的位图。使此位图的大小与您正常使用的位图的大小相同。加载它并检查您遇到问题的相同像素(或任何像素)的RGB值。
这应该告诉您问题是缩放,我认为是什么,或者可能是颜色转换中的问题。
答案 2 :(得分:0)
如果你没有快速找到答案,那么我的实用主义者会说你自己解析.png是多么困难,以获得完全确定的结果,而不依赖于平台的任何变化。
答案 3 :(得分:0)
我的2.3设备(Nexus One和S)在没有设置“opt.inPreferredConfig”的情况下工作正常,但似乎2.2需要它才能获得准确的RGB。