วิธี HTML canvas createImageData()
การประกาศและการใช้งาน
createImageData()
วิธีสร้างวัตถุ ImageData ที่มีพื้นที่ว่างใหม่ ค่าพิกษุ์ปริมาณต้นทางเป็นสีดำสดาน
สำหรับแต่ละพิกษุ์ของวัตถุ ImageData มีข้อมูลสี่มิติ คือค่า RGBA:
- R - สีสีแดง (0-255)
- G - สีสีเขียว (0-255)
- B - สีสีน้ำเงิน (0-255)
- A - ช่องสี alpha (0-255; 0 คือสีสดาน 255 คือเห็นได้เต็มทั้งหมด)
ดังนั้น สีสีดำที่ไม่มีสี (transparent black) จะเป็น (0,0,0,0)
color/alpha มีรูปแบบแบบแรงจัดเรียง และเพราะตัวแปรแบบแรงจัดเรียงมีข้อมูลสี่ข้อมูลต่อพิกเซล ดังนั้นขนาดของตัวแปรแบบแรงจัดเรียงคือสี่เท่าของ ImageData (มีวิธีง่ายที่จะได้ขนาดของตัวแปรแบบแรงจัดเรียงคือใช้ ImageDataObject.data.length)
ตัวแปรแบบแรงจัดเรียงที่มีข้อมูล color/alpha ถูกเก็บไว้ใน ImageData ของ data ในคุณสมบัติ
คำเตือน:หลังจากที่ดำเนินการเสร็จกับข้อมูล color/alpha ในตัวแปรแบบแรงจัดเรียง putImageData() เมธอดนี้จะคัดลอกข้อมูลภาพกลับไปที่หน้าแผ่นภาพ
ตัวอย่าง:
รูปแบบนี้ทำให้พิกเซลแรกของวัตถุ ImageData กลายเป็นสีแดง
imgData = ctx.createImageData(100, 100); imgData.data[0] = 255; imgData.data[1] = 0; imgData.data[2] = 0; imgData.data[3] = 255;
รูปแบบนี้ทำให้พิกเซลที่สองของวัตถุ ImageData กลายเป็นสีแดง
imgData = ctx.createImageData(100, 100); imgData.data[4] = 0; imgData.data[5] = 255; imgData.data[6] = 0; imgData.data[7] = 255;
ตัวอย่าง
สร้างวัตถุ ImageData ขนาด 100*100 พิกเซล ทั้งหมดเป็นสีแดงและนำมันไปที่หน้าแผ่นภาพ
JavaScript:
var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var imgData =ctx.createImageData(100, 100); for (var i = 0; i < imgData.data.length; i += 4) { imgData.data[i+0] = 255; imgData.data[i+1] = 0; imgData.data[i+2] = 0; imgData.data[i+3] = 255; } ctx.putImageData(imgData, 10, 10);
รูปแบบการใช้งาน
มีสองรูปแบบของเมธอด createImageData()
1. สร้าง ImageData ออบเจกใหม่ด้วยขนาดที่กำหนด (นับเป็นพิกเซล):
var imgData=context.createImageData(width,height);
2. สร้าง ImageData ออบเจกใหม่ที่มีขนาดเท่ากับอีก ImageData ออบเจกที่กำหนด โดยไม่คัดลอกข้อมูลภาพ (จะไม่คัดลอกข้อมูลภาพ):
var imgData=context.createImageData(imageData);
ตัวแปรค่า
ตัวแปร | คำอธิบาย |
---|---|
width | ความกว้างของ ImageData ออบเจก โดยนับเป็นพิกเซล |
height | ความสูงของ ImageData ออบเจก โดยนับเป็นพิกเซล |
imageData | อีก ImageData ออบเจก |
การสนับสนุนโดยบราวเซอร์
ตัวเลขในตารางนี้บอกเกี่ยวกับเวอร์ชั่นบราวเซอร์แรกที่สนับสนุนคุณสมบัตินี้
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
หมายเหตุ:Internet Explorer 8 และเวอร์ชั่นต่อไปนี้ไม่สนับสนุนสมาชิก <canvas>