0

我有两个位图,一个是墙纸图像,另一个是包含 alpha 信息的黑白图像。我想将该 alpha 信息应用于壁纸图像。

现在我知道我可以像这样改变不透明度:

img.setOpacity(50);

但这设置了整个位图的 alpha,这不是我想要的。我想要一种基于黑白源设置图像 alpha 的高级方法。

4

1 回答 1

0

你想要Bitmap.setPixel。例如,假设您的位图大小相同:

Bitmap a,b;//initialized - a is the b&w image, b is the normal image

for (int x = 0; x < a.width(); x++)
{
    for (int y = 0; y < a.height(); y++)
    {
        int color = b.getPixel(x, y);
        int red = (color >> 16) & 0xFF;
        int green = (color >> 8) & 0xFF;
        int blue = (color >> 0) & 0xFF;
        if (a.getPixel(x, y) == Color.WHITE)
            b.setPixel(x, y, Color.argb(0.5, red, green, blue));//alpha = 0.5
        else
            b.setPixel(x, y, Color.argb(1, red, green, blue));//alpha = 1
    }
}
于 2013-07-19T14:45:55.717 回答