0
我有兩個位圖,一個壁紙圖像和另一個黑白圖像,它們將包含alpha信息。我想將該alpha信息應用於壁紙圖像。位圖上的不透明貼圖android
現在我知道我可以改變的不透明度是這樣的:
img.setOpacity(50);
但這將整個位圖,這是不是我想要什麼的阿爾法。我想要一種先進的方式來設置基於黑白源的圖像alpha。
我有兩個位圖,一個壁紙圖像和另一個黑白圖像,它們將包含alpha信息。我想將該alpha信息應用於壁紙圖像。位圖上的不透明貼圖android
現在我知道我可以改變的不透明度是這樣的:
img.setOpacity(50);
但這將整個位圖,這是不是我想要什麼的阿爾法。我想要一種先進的方式來設置基於黑白源的圖像alpha。
你想要Bitmap.setPixel。例如,假設你的位圖的大小相同:
Bitmap a,b;//initialized - a is the b&w image, b is the normal image
for (int x = 0; x < a.width(); x++)
{
for (int y = 0; y < a.height(); y++)
{
int color = b.getPixel(x, y);
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = (color >> 0) & 0xFF;
if (a.getPixel(x, y) == Color.WHITE)
b.setPixel(x, y, Color.argb(0.5, red, green, blue));//alpha = 0.5
else
b.setPixel(x, y, Color.argb(1, red, green, blue));//alpha = 1
}
}
嘗試,得到了一個錯誤:java.lang.IllegalStateException 07-19 20:41:30.285:E/AndroidRuntime(8210):\t在android.graphics .Bitmap.setPixel(Bitmap.java:1074).....對於記錄,這是我應該如何繪製,對吧? \t c.drawBitmap(b,0,0,p); –
你有沒有考慮過使用_ImageView_? – Phil
我在一個動態壁紙中使用它 –