我正在使用rgb像素数据绘制图像。我需要为该图像设置透明背景颜色。我可以将alpha设置为透明图像的值是多少?或者还有其他解决方案吗?
答案 0 :(得分:8)
如果我了解您的需求,您基本上希望将图像上的特定颜色变为透明。为此,您需要使用getImageData
结帐mdn for an explanation on pixel manipulation。
下面是一些示例代码
var imgd = ctx.getImageData(0, 0, imageWidth, imageHeight),
pix = imgd.data;
for (var i = 0, n = pix.length; i <n; i += 4) {
var r = pix[i],
g = pix[i+1],
b = pix[i+2];
if(g > 150){
// If the green component value is higher than 150
// make the pixel transparent because i+3 is the alpha component
// values 0-255 work, 255 is solid
pix[i + 3] = 0;
}
}
ctx.putImageData(imgd, 0, 0);
<强> And a working demo 强>
使用上面的代码,您可以使用
检查fuschia if(r == 255 && g == 0 && b == 255)
答案 1 :(得分:2)
我想你想要 clearRect 画布方法:
http://www.w3schools.com/html5/canvas_clearrect.asp
这样可以将像素清除为透明(或任何其他RGBA颜色)而无需操作或像素操作。
答案 2 :(得分:0)
0表示像素是完全透明的alpha,alpha值为255是完全不透明的,这意味着它没有透明度。
如果图像的某些部分是完全透明的(alpha为0),只要使用Alpha为0,对RGB值使用的内容并不重要。在旁边注意我有一些旧的Windows程序使用像左上角像素或右下角像素这样的假设用作透明度颜色。然后它将循环遍历所有像素,并在遇到此特定RGB值时将alpha设置为0.
如果您使用127的Alpha并且图像出现在另一个图像的顶部,则看起来两个图像看起来同样可见,或者底部图像正在将其50%的颜色渗透到顶部图像。
如果要测试并查看将其应用于整个图像时的样子,请为alpha设置变量。