javascript - 我想在不更改 alpha 值的情况下为像素着色。怎么办?这对我不起作用

标签 javascript html5-canvas getimagedata putimagedata

window.onload = function() {
                var Can1 = document.getElementById('canvas2');

                    var ctx = Can1.getContext("2d");
                    Can1.width=960;
                    Can1.height=720;
                        //ctx.fillStyle = "rgba(0,255,0,0)";
                        //ctx.fillRect(0,0,960,720);
                    var imgData=ctx.getImageData(0,0,960,720);
                     for (var i=0;i<imgData.data.length;i+=4)
                          {
                             imgData.data[i]=255/*-imgData.data[i]*/;
                             imgData.data[i+1]=0/*255-imgData.data[i+1]*/;
                             imgData.data[i+2]=0/*255-imgData.data[i+2]*/;
                             imgData.data[i+3]=255-imgData.data[i+3];
                          }
                          ctx.putImageData(imgData,0,0);




}

最佳答案

这会将 Canvas 的每个像素更改为红色,且 alpha 不变;

    var Can1 = document.getElementById("canvas2");
    var ctx = Can1.getContext("2d");

    // get all canvas pixel data
    imgData = ctx.getImageData(0, 0, Can1.width, Can1.height);

    // change every pixel on the canvas to rgba(255,0,0,255);
    for (var i=0;i<imgData.data.length;i+=4){
        imgData.data[i]=255     // this is the red component of this pixel
        imgData.data[i+1]=0     // this is the green component of this pixel
        imgData.data[i+2]=0     // this is the blue component of this pixel
        // To keep the alpha the same, just leave .data[i+3] unchanged
        //imgData.data[i+3];  // this is the alpha component of this pixel
    }

    // replace all the canvas pixels with your modified pixels
    ctx.putImageData(imgData,0,0);

关于javascript - 我想在不更改 alpha 值的情况下为像素着色。怎么办?这对我不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847494/

相关文章:

javascript - 如何使用 React 在客户端裁剪图像而不丢失分辨率

javascript - 如何防止 Javascript 对象丢失数组/对象引用

javascript - ngstrap typeahead无序多关键字搜索

javascript - 在html5中,Javascript有没有办法让我只绘制可拖动的多边形?或者监听鼠标事件?

javascript - 为什么没有图像数据引用?

internet-explorer - 有没有办法从 Internet Explorer 获取像素数据?

javascript - getImageData 给出 "undefined is not a function"错误

javascript - 使用 Jquery 根据选定的下拉选项隐藏表单元素

javascript - D3 - x 轴的标签是链接

javascript - DIV 意外改变形状