Phương thức Canvas getImageData()
Định nghĩa và cách sử dụng
getImageData()
Phương thức này trả về đối tượng ImageData, đối tượng này sao chép dữ liệu pixel của hình vuông được chỉ định trên canvas.
Đối với mỗi pixel trong đối tượng ImageData, đều có bốn thông tin, tức là giá trị RGBA:
- R - màu đỏ (0-255)
- G - màu xanh lá cây (0-255)
- B - màu xanh (0-255)
- A - alpha kênh (0-255; 0 là trong suốt, 255 là hoàn toàn nhìn thấy được)
color/alpha tồn tại dưới dạng mảng và được lưu trữ trong đối tượng ImageData data thuộc tính.
Lưu ý:Sau khi hoàn thành việc thao tác với thông tin color/alpha trong mảng, bạn có thể sử dụng putImageData() Phương thức này sẽ sao chép dữ liệu hình ảnh trở lại canvas.
Ví dụ:
Dưới đây là đoạn mã để lấy thông tin color/alpha của pixel đầu tiên trong đối tượng ImageData được trả về:
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
Lưu ý:Bạn cũng có thể sử dụng phương thức getImageData() để đảo ngược màu của mỗi pixel trên một hình ảnh nào đó trên canvas.
Sử dụng công thức này để duyệt qua tất cả các pixel và thay đổi giá trị màu của chúng:
red=255-old_red; green=255-old_green; blue=255-old_blue;
Xin xem chi tiết ở ví dụ dưới đây “Thử nghiệm cá nhân.”
Mô hình
Ví dụ 1
Mã dưới đây sử dụng getImageData() để sao chép dữ liệu pixel của矩 hình chỉ định trên canvas, sau đó sử dụng putImageData() để đặt lại dữ liệu hình ảnh vào canvas:
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); }
Lưu ý:Cung cấp thêm ví dụ ở cuối trang.
Syntax
var imgData=context.getImageData(x,y,width,height);
Giá trị của parameter
Parameter | Mô tả |
---|---|
x | Tọa độ x của góc trên cùng bên trái bắt đầu sao chép. |
y | Tọa độ y của góc trên cùng bên trái bắt đầu sao chép. |
width | Chiều rộng của vùng矩 hình cần sao chép. |
height | Chiều cao của vùng矩 hình cần sao chép. |
Thêm ví dụ
Ví dụ 2
Hình ảnh cần sử dụng:

Sử dụng getImageData() để đảo ngược màu của mỗi pixel trên canvas.
JavaScript:
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("tulip"); ctx.drawImage(img,0,0); var imgData=ctx.getImageData(0,0,c.width,c.height); // Đảo ngược màu 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);
Hỗ trợ trình duyệt
Số liệu trong bảng ghi chú về phiên bản trình duyệt đầu tiên hoàn toàn hỗ trợ thuộc tính này.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
Ghi chú:Internet Explorer 8 và các phiên bản trước không hỗ trợ phần tử <canvas>.