当alpha等于254时,位图setPixel()会错误地设置值

时间:2013-10-27 14:33:05

标签: android bitmap

首先让我向您展示Android API 16中的一些简单代码:

Bitmap bmp = Bitmap.createBitmap(2, 2, Bitmap.Config.ARGB_8888);
bmp.setHasAlpha(true);
int c0 = Color.argb(254, 128, 128, 128);
Log.i("Color before", "c0 = " + c0 
        + " (" + Color.alpha(c0) + ", " 
        + Color.red(c0) + ", " 
        + Color.green(c0) + ", " 
        + Color.blue(c0) + ") "); //c0 = -25132928 (254, 128, 128, 128) 
bmp.setPixel(0, 0, c0);
int c1 = bmp.getPixel(0, 0);
Log.i("Color after", "c1 = " + c1 
        + " (" + Color.alpha(c1) + ", " 
        + Color.red(c1) + ", " 
        + Color.green(c1) + ", " 
        + Color.blue(c1) + ") "); //c1 = -25198721 (254, 127, 127, 127) 

当alfa = 254且任何子像素值= 128时,它们将保存为127。 AFAIK这是唯一一组不起作用的值,但我没有检查所有现有的排列。

我读过一些类似的文章,但他们描述了有关位图转换,位图复制或缺少调用方法setHasAlpha(true)的问题。

这是一个主要问题的简单示例,我不知道它是否是一个android bug或者我在这里做错了什么。所以我将非常感谢您的帮助和解决方案(如果存在)。

提前致谢。

0 个答案:

没有答案