โพสต์เก่าแล้วฉันจะไปกับคำแนะนำของฉัน คำแนะนำจะขึ้นอยู่กับการจัดการพิกเซลในบริบท Canvas 2d จาก MDN:
คุณสามารถจัดการข้อมูลพิกเซลโดยตรงในผืนผ้าที่ระดับไบต์
ในการจัดการพิกเซลเราจะใช้สองฟังก์ชั่นที่นี่ - getImageData และ putImageData
การใช้งานฟังก์ชั่น getImageData:
var myImageData = context.getImageData (ซ้าย, ด้านบน, ความกว้าง, ความสูง);
และไวยากรณ์ putImageData:
context.putImageData (myImageData, dx, dy); // dx, dy - x และ y ชดเชยบนผืนผ้าใบของคุณ
โดยบริบทคือบริบท Canvas 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 ฉบับสมบูรณ์ได้ที่นี่