2011-08-23 58 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