Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带alpha的html5画布drawImage_Html_Canvas_Transparency_Drawimage - Fatal编程技术网

不带alpha的html5画布drawImage

不带alpha的html5画布drawImage,html,canvas,transparency,drawimage,Html,Canvas,Transparency,Drawimage,我想知道是否可以不使用alpha通道但保持透明度。 我需要的是根据alpha值绘制或不绘制(png文件的)像素 如果alpha通道>128,则绘制像素 否则不要画像素 谢谢也许有一些方法可以做到这一点 一种方法是只绘制图像,然后调用getImageData 检查图像数据中的每个像素,如果alpha分量良好,事实上这不是我要找的。A我想修改图像,而不是画布。我想做一个预处理之前,闪电图像…所以你必须做完全相同的事情如上所述,除了画在内存画布上的图像。因此,使用document.createElem

我想知道是否可以不使用alpha通道但保持透明度。 我需要的是根据alpha值绘制或不绘制(png文件的)像素

如果alpha通道>128,则绘制像素 否则不要画像素


谢谢

也许有一些方法可以做到这一点

一种方法是只绘制图像,然后调用
getImageData


检查图像数据中的每个像素,如果alpha分量良好,事实上这不是我要找的。A我想修改图像,而不是画布。我想做一个预处理之前,闪电图像…所以你必须做完全相同的事情如上所述,除了画在内存画布上的图像。因此,使用
document.createElement('canvas')
创建一个新画布,将图像绘制到其中,应用上述操作,然后将该画布绘制到普通画布。(
ctx.drawImage(tempCanvas,0,0)
)啊,好的。谢谢。我试试看。但这意味着画布可以有alpha通道。我试试。。。如果成功的话那就太好了。所有的画布都有阿尔法通道。事实上,默认画布是透明黑色(也称为rgba(0,0,0,0))
var imageData = ctx.getImageData(0,0,picwidth, picheight);
var pixels = imageData.data;
var numPixels = pixels.length;

ctx.clearRect(0, 0, can.width, can.height);

for (var i = 0; i < numPixels; i++) {
    if (pixels[i*4+3] <= 128) pixels[i*4+3] = 0;
}
ctx.putImageData(imageData, 0, 0);