ตัวอย่าง
โค้ดข้างล่างนี้คัดลอกข้อมูลพิกเซลสำหรับสี่เหลี่ยมที่ระบุบนผืนผ้าใบด้วย getImageData() และจากนั้นใส่ข้อมูลภาพกลับขึ้นไปบนผืนผ้าใบด้วย putImageData() :
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(10,10,50,50);
function copy()
{
var imgData=ctx.getImageData(10,10,50,50);
ctx.putImageData(imgData,10,70);
}
ลองตัวเอง» สนับสนุนเบราว์เซอร์
ตัวเลขในตารางระบุราว์เซอร์รุ่นแรกที่สนับสนุนอย่างเต็มที่วิธีการ
วิธี | |||||
---|---|---|---|---|---|
getImageData() | 4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
ความหมายและการใช้งาน
getImageData() วิธีการส่งกลับวัตถุ ImageData ที่คัดลอกข้อมูลพิกเซลสำหรับสี่เหลี่ยมที่ระบุบนผืนผ้าใบ
Note: วัตถุ ImageData ไม่ได้เป็นภาพจะระบุส่วน (rectangle) บนผืนผ้าใบและเก็บข้อมูลของทุกพิกเซลภายในสี่เหลี่ยมผืนผ้า
สำหรับพิกเซลในวัตถุ ImageData ทุกมีสี่ชิ้นส่วนของข้อมูลค่า RGBA นี้:
R - สีแดง (from 0-255)
G - สีเขียว (from 0-255)
B - สีฟ้า (from 0-255)
เอ - ช่องอัลฟา (from 0-255; 0 is transparent and 255 is fully visible)
ข้อมูลสี / อัลฟาจะจัดขึ้นในอาร์เรย์และถูกเก็บไว้ใน ข้อมูล คุณสมบัติของวัตถุ ImageData
Tip: หลังจากที่คุณได้จัดการข้อมูลสี / อัลฟาในอาร์เรย์คุณสามารถคัดลอกข้อมูลภาพกลับขึ้นไปบนผืนผ้าใบที่มี putImageData() วิธีการ
Example:
รหัสสำหรับการรับข้อมูลสี / อัลฟาของพิกเซลในวัตถุ ImageData กลับมาว่า:
red=imgData.data[0];
green=imgData.data[1];
blue=imgData.data[2];
alpha=imgData.data[3];
Tip: นอกจากนี้คุณยังสามารถใช้ getImageData() วิธีการสลับสีของพิกเซลของภาพทุกคนบนผืนผ้าใบ
ห่วงผ่านพิกเซลทั้งหมดและเปลี่ยนค่าสีโดยใช้สูตรนี้
red=255-old_red;
green=255-old_green;
blue=255-old_blue;
ดูด้านล่างสำหรับการ "Try it Yourself" ตัวอย่าง!
JavaScript ไวยากรณ์
ไวยากรณ์ JavaScript: | context getImageData( x,y,width,height ) ; |
---|
ค่าพารามิเตอร์
พารามิเตอร์ | ลักษณะ |
---|---|
x | พิกัด x (in pixels) ของมุมซ้ายบนจะเริ่มต้นจากการคัดลอก |
y | พิกัด y (in pixels) ของมุมซ้ายบนจะเริ่มต้นจากการคัดลอก |
width | ความกว้างของพื้นที่สี่เหลี่ยมที่คุณจะคัดลอก |
height | ความสูงของพื้นที่สี่เหลี่ยมที่คุณจะคัดลอก |
ตัวอย่างอื่น ๆ
ภาพที่จะใช้:
ตัวอย่าง
ใช้ getImageData() เพื่อกลับสีของพิกเซลของภาพบนผืนผ้าใบทุกนี้:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,0,0);
var imgData=ctx.getImageData(0,0,c.width,c.height);
// invert colors
for (var i=0;i<imgData.data.length;i+=4)
{
imgData.data[i]=255-imgData.data[i];
imgData.data[i+1]=255-imgData.data[i+1];
imgData.data[i+2]=255-imgData.data[i+2];
imgData.data[i+3]=255;
}
ctx.putImageData(imgData,0,0);
ลองตัวเอง» <ผ้าใบวัตถุ