【发布时间】:2011-08-23 13:38:40
【问题描述】:
我有一个 ARGB_8888 位图,我需要在绘制到画布之前应用一个 alpha 蒙版。 Alpha 掩码是表示图像的 Alpha 通道的字节流。我可以检索位图的像素值的 int 数组,遍历数组并为每个像素设置 alpha,从新像素值创建位图,并将其绘制到画布上;但这似乎效率极低。因此,我希望使用一些内置功能将蒙版应用于位图;但找不到任何有用的东西。有什么建议吗?
【问题讨论】:
我有一个 ARGB_8888 位图,我需要在绘制到画布之前应用一个 alpha 蒙版。 Alpha 掩码是表示图像的 Alpha 通道的字节流。我可以检索位图的像素值的 int 数组,遍历数组并为每个像素设置 alpha,从新像素值创建位图,并将其绘制到画布上;但这似乎效率极低。因此,我希望使用一些内置功能将蒙版应用于位图;但找不到任何有用的东西。有什么建议吗?
【问题讨论】:
首先,确保您有一个带有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);
}
}
希望这会有所帮助!
【讨论】: