投稿はこれまでのところ古いので、私は私の提案に従っていきます。提案は、キャンバスの2Dコンテキストでのピクセル操作に基づいています。MDNから:
キャンバスのピクセルデータをバイトレベルで直接操作できます
ピクセルを操作するには、ここでgetImageDataとputImageDataの2つの関数を使用します。
getImageData関数の使用法:
var myImageData = context.getImageData(left、top、width、height);
そして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の全記事はこちら