게시물이 오래되었습니다. 내 제안과 함께 갈 것입니다. 제안은 캔버스 2D 컨텍스트에서 픽셀 조작을 기반으로합니다. MDN에서 :
바이트 수준에서 캔버스의 픽셀 데이터를 직접 조작 할 수 있습니다
픽셀을 조작하기 위해 여기서는 getImageData와 putImageData의 두 가지 함수를 사용합니다.
getImageData 함수 사용법 :
var myImageData = context.getImageData (왼쪽, 위, 너비, 높이);
putImageData 구문 :
context.putImageData (myImageData, dx, dy); // dx, dy-캔버스의 x 및 y 오프셋
어디 문맥은 당신의 캔버스 2D 컨텍스트입니다
빨간색 녹색 파란색과 알파 값을 얻으려면 다음을 수행하십시오.
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 기사를 참조 하십시오.