2
我有一個ARGB_8888位圖,我需要在繪製到畫布之前應用一個alpha遮罩。 Alpha掩碼是表示圖像的Alpha通道的字節流。我可以檢索位圖的像素值的int數組,循環訪問數組併爲每個像素設置alpha,從新像素值創建一個位圖並將其繪製到畫布上;但這看起來效率極低。所以,我希望使用一些內置的功能來將掩碼應用於位圖;但找不到有用的東西。有什麼建議?Android:如何將透明度蒙版應用於位圖?
我有一個ARGB_8888位圖,我需要在繪製到畫布之前應用一個alpha遮罩。 Alpha掩碼是表示圖像的Alpha通道的字節流。我可以檢索位圖的像素值的int數組,循環訪問數組併爲每個像素設置alpha,從新像素值創建一個位圖並將其繪製到畫布上;但這看起來效率極低。所以,我希望使用一些內置的功能來將掩碼應用於位圖;但找不到有用的東西。有什麼建議?Android:如何將透明度蒙版應用於位圖?
首先要確保你有一個可變位圖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);
}
}
希望這有助於!
你想要一個.getHeight()在一個循環;) – Michele
愚蠢的我! :D感謝犀利的眼睛! – Codeman
謝謝;但這仍然比我想要的要慢得多。我真的希望有某種混合模式或AlphaMaskFilter或類似的東西 – ab11