我有两个位图,一个是墙纸图像,另一个是包含 alpha 信息的黑白图像。我想将该 alpha 信息应用于壁纸图像。
现在我知道我可以像这样改变不透明度:
img.setOpacity(50);
但这设置了整个位图的 alpha,这不是我想要的。我想要一种基于黑白源设置图像 alpha 的高级方法。
你想要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
}
}