我有一个ARGB_8888位图,我需要在绘制到画布之前应用alpha蒙版。 Alpha掩码是表示图像的alpha通道的字节流。我可以为Bitmap检索像素值的int数组,遍历数组并为每个像素设置alpha,从新的像素值创建位图,并将其绘制到画布上;但这似乎效率极低。因此,我希望使用一些内置功能将掩码应用于位图;但找不到任何有用的东西。有什么建议吗?
答案 0 :(得分:2)
首先,确保您有一个带有Bitmap.isMutable()
的可变位图。
您是否尝试Bitmap.setHasAlpha
并在可变Bitmap
上使用算术运算来简单地“添加”Alpha通道?
也就是说,如果您的像素为#00FF0000
,则可以添加#FF000000
以使其完全透明。
这比复制到新的Bitmap
要高效得多。
也许像
int desiredAlpha = 0x0F000000;
for(int i = 0; i < Bitmap.getwidth; i++)
{
for(int j = 0; j < Bitmap.getHeight; j++)
{
Bitmap.setPixel(Bitmap.getPixel(i,j) + desiredAlpha);
}
}
希望这有帮助!