[英]Since the Android getFragmentManager() API is deprecated, is there any alternative?
[英]Android AvoidXfermode is deprecated since API 16, is there a replacement?
我需要在另一個位圖上繪制一個位圖,但是我只想在具有特定顏色(在這種情況下為透明)的像素上繪制。 我了解到, 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繪制的字節數據數組或畫布(實際上可以將其用作新Image)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.