到目前为止,该帖子已过时,我会接受我的建议。建议基于canvas 2d上下文中的像素操作。从MDN:
您可以在字节级别直接操作画布中的像素数据
为了操作像素,我们将在此处使用两个函数-getImageData和putImageData
getImageData函数的用法:
var myImageData = context.getImageData(left,top,width,height);
和putImageData语法:
context.putImageData(myImageData,dx,dy); // dx,dy-画布上的x和y偏移量
当背景是你的画布2D背景
因此,要获得红色,绿色,蓝色和alpha值,我们将执行以下操作:
var r = imageData.data[((x*(imageData.width*4)) + (y*4))];
var g = imageData.data[((x*(imageData.width*4)) + (y*4)) + 1];
var b = imageData.data[((x*(imageData.width*4)) + (y*4)) + 2];
var a = imageData.data[((x*(imageData.width*4)) + (y*4)) + 3];
其中x是x偏移量,y是y在画布上的偏移量
所以我们有代码使图像半透明
var canvas = document.getElementById('myCanvas');
var c = canvas.getContext('2d');
var img = new Image();
img.onload = function() {
c.drawImage(img, 0, 0);
var ImageData = c.getImageData(0,0,img.width,img.height);
for(var i=0;i<img.height;i++)
for(var j=0;j<img.width;j++)
ImageData.data[((i*(img.width*4)) + (j*4) + 3)] = 127;//opacity = 0.5 [0-255]
c.putImageData(ImageData,0,0);//put image data back
}
img.src = 'image.jpg';
您可以创建自己的“着色器”- 在此处查看完整的MDN文章