Android 安卓2.2会扭曲图片颜色吗?

Android 安卓2.2会扭曲图片颜色吗?,android,image,png,Android,Image,Png,我的应用程序中有一些.png文件。我需要在运行时加载这些,并从中获得特定像素的确切颜色。重要的是,我不想缩放这些图片。我不直接在UI上显示它们,它们用作地图 现在,在安卓1.5上,这没有问题。我将这些图像放在“/res/drawable”目录中,使用BitmapFactory将它们加载到位图对象中,并使用它获得所需像素的颜色。例如,像素(100,50)具有颜色RGB(100,1100) 在安卓2.2THO上,同样的过程会产生不同的颜色(对于相同的像素),因此我得到相同(100,50)像素的RGB

我的应用程序中有一些.png文件。我需要在运行时加载这些,并从中获得特定像素的确切颜色。重要的是,我不想缩放这些图片。我不直接在UI上显示它们,它们用作地图

现在,在安卓1.5上,这没有问题。我将这些图像放在“/res/drawable”目录中,使用BitmapFactory将它们加载到位图对象中,并使用它获得所需像素的颜色。例如,像素(100,50)具有颜色RGB(100,1100)

在安卓2.2THO上,同样的过程会产生不同的颜色(对于相同的像素),因此我得到相同(100,50)像素的RGB(99,3102)/RGB(101,2,99)/etc。我检查了位图对象的分辨率,似乎没有缩放


有人能解释一下,为什么我会得到扭曲的颜色值吗?

去给自己制作一个与所讨论的像素颜色完全相同的位图。使此位图的大小与当前使用的位图的分辨率相同。加载它并检查您遇到问题的同一像素(或任何像素)的RGB值


这应该告诉你你的问题是不是缩放(我认为是缩放),或者可能是颜色翻译的问题。

如果你不能很快找到答案,我的实用主义倾向会问你自己解析.png有多难,要获得完全确定的结果,不受平台中任何更改的影响。

已解决:看来,在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);

我的2.3设备(Nexus One和S)在没有设置“opt.inPreferredConfig”的情况下运行良好,但2.2似乎需要它来实现精确的RGB。

我做到了,创建了一个相同大小的位图,并用颜色(100、22、100)填充它,加载它,并尝试获取不同像素的颜色值。我得到了不同的颜色(都接近给定的颜色),即使整张图片都是纯色。。。我在这里遗漏了什么?没错,但我认为这样一个现代框架能够加载该死的.png是一个合理的期望。好吧,它可以-但是希望加载它作为数据使用而不改变的愿望可能与框架实现者支持最佳视觉显示的明显愿望不同(可能包括抖动、抗锯齿或谁知道是什么)。不过,很高兴您找到了利用平台功能实现这一点的方法。