2011-08-23 47 views
2

我有一个ARGB_8888位图,我需要在绘制到画布之前应用一个alpha遮罩。 Alpha掩码是表示图像的Alpha通道的字节流。我可以检索位图的像素值的int数组,循环访问数组并为每个像素设置alpha,从新像素值创建一个位图并将其绘制到画布上;但这看起来效率极低。所以,我希望使用一些内置的功能来将掩码应用于位图;但找不到有用的东西。有什么建议?Android:如何将透明度蒙版应用于位图?

回答

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); 
    } 
} 

希望这有助于!

+2

你想要一个.getHeight()在一个循环;) – Michele

+0

愚蠢的我! :D感谢犀利的眼睛! – Codeman

+0

谢谢;但这仍然比我想要的要慢得多。我真的希望有某种混合模式或AlphaMaskFilter或类似的东西 – ab11