2013-07-19 72 views
0

我有兩個位圖,一個壁紙圖像和另一個黑白圖像,它們將包含alpha信息。我想將該alpha信息應用於壁紙圖像。位圖上的不透明貼圖android

現在我知道我可以改變的不透明度是這樣的:

img.setOpacity(50); 

但這將整個位圖,這是不是我想要什麼的阿爾法。我想要一種先進的方式來設置基於黑白源的圖像alpha。

回答

0

你想要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 
    } 
} 
+0

嘗試,得到了一個錯誤: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); –

+0

你有沒有考慮過使用_ImageView_? – Phil

+0

我在一個動態壁紙中使用它 –