我需要在另一個位圖上繪製位圖,但我只想繪製具有特定顏色(在本例中爲透明)的像素的頂部。 據我所知,AvoidXfermode
可以做到這一點,但它自API 16以來已被棄用。 現在有沒有不同的方法呢?Android AvoidXfermode自API 16以來已棄用,是否有替代?
謝謝
我需要在另一個位圖上繪製位圖,但我只想繪製具有特定顏色(在本例中爲透明)的像素的頂部。 據我所知,AvoidXfermode
可以做到這一點,但它自API 16以來已被棄用。 現在有沒有不同的方法呢?Android AvoidXfermode自API 16以來已棄用,是否有替代?
謝謝
我收到了正確的答案在我的私人信箱(你可以爲新的圖像基本上使用) ,所以我會在這裏分享它: 沒有替代方法。 AvoidXfermode
已棄用,因爲它在硬件中不受支持。但是,在位圖上繪圖時仍然可以使用它。
當然,另一種方法是像素逐個像素,並用特定顏色替換,但這不是我所期待的。
這裏我們去,假設位圖大小是相同的。
var image1, image2;
var newCanvas = document.createElement('canvas');
var newContext = newCanvas.getContext('2d');
newCanvas.width = image1.width;
newCanvas.height = image1.height;
newContext.drawImage(image1, 0, 0);
var imgData = newContext.getImageData(0,0,newCanvas.width, newCanvas.height);
newContext.drawImage(image2, 0, 0);
var imgData2 = newContext.getImageData(0,0,newCanvas.width, newCanvas.height);
for (var i = 0; i < imgData.data.length; i += 4) {
if(imgData.data[i] < 20 //If Red is less than 20
&& imgData.data[i+1] == 40 //If Green is 40
&& imgData.data[i+2] >= 240 //If Blue is over 240
&& imgData.data[i+3] >= 240) //If Alpha is over 240
{
imgData.data[i] = imgData2.data[i];
imgData.data[i+1] = imgData2.data[i+1];
imgData.data[i+2] = imgData2.data[i+2];
imgData.data[i+3] = imgData2.data[i+3];
}
}
imgData2 = null;
newContext.putImageData(imgData, 0, 0);
這應該只是複製它,因爲如果任何像素滿足這些參數。
最終的結果要麼是imgData,數據的字節數組,你可以借鑑使用putImageData,或帆布
我不知道android canvas是如何工作的。但在web開發中,這是我們如何使用canvas(es)處理imageData – 2013-04-22 01:19:48
http://developer.android.com/reference/android/graphics/AvoidXfermode.html。棄用而不解釋。 – Raghunandan 2013-04-21 14:39:19