HTML5如何在画布中绘制透明像素图像

时间:2012-04-04 20:47:32

标签: image html5 canvas pixel transparent

我正在使用rgb像素数据绘制图像。我需要为该图像设置透明背景颜色。我可以将alpha设置为透明图像的值是多少?或者还有其他解决方案吗?

3 个答案:

答案 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设置变量。