19/09/2018, 15:01

getImageData() trong Canvas

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 < ! DOCTYPE html > < html > < body > < canvas id = "myCanvas" awidth = "300" height = "150" ...

Demo

Trình duyệt hỗ trợ

Số trong bảng dưới đây thể hiện phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ cho thuộc tính.

Thuộc tính Icon Chrome Icon FireFox Icon IE Icon Safari Icon Opera
getImageData() 4.0 2.0 9.0 3.1 9.0

Định nghĩa và cách sử dụng

Phương thức getImageData() trả về một đối tượng ImageData đã được sao chép dữ liệu về từng pixel trong hình chữ nhật trên canvas.

Lưu ý: Đối tượng ImageData không phải là một bức ảnh mà nó chỉ là một phần (hình chữ nhật) trên canvas và lưu trữ thông tin về từng pixel trong hình chữ nhật đó.

Mỗi pixel trong đối tượng ImageData có chứa 4 thông tin, thông tin đó chính là giá trị RGBA:

R – Màu đỏ (từ 0-255)
G – Màu xanh lá cây (từ 0-255)
B – Màu xanh da trời (từ 0-255)
A – Độ mờ (từ 0-255; 0 là trong suốt và 255 là hiển thị đầy đủ)

Thông tin về màu/độ mờ được chứa trong một mạng và được lưu trữ trong thuộc tính data của đối tượng ImageData.

Mẹo: Sau khi bạn có thông tin về màu/độ mờ trong mảng, bạn có thể sao chép dữ liệu này để hiển thị trên canvas bằng phương thức putImageData().

Ví dụ

Đoạn mã lấy thông tin màu/độ mờ của pixel đầu tiên trong đối tượng ImageData được trả về:

Mẹo: Bạn cũng có thể sử dụng phương thức getImageData() để đảo ngược màu từng pixel của ảnh trên thẻ canvas.

Để thay đổi màu sắc của từng điểm ảnh, bạn có thể sử dụng công thức sau:

Xem chi tiết ở ví dụ bên dưới

Cú pháp JavaScript:

Cú pháp JavaScript: context.getImageData(x,y,awidth,height);

Giá trị tham số

Tham sốMiêu tả
xTọa độ X (đơn vị đo là pixel) góc trên bên trái của điểm bắt đầu sao chép
yTọa độ Y (đơn vị đo là pixel) góc trên bên trái của điểm bắt đầu sao chép
awidthChiều rộng của khu vực hình chữ nhật bạn muốn sao chép
heightChiều cao của khu vực hình chữ nhật bạn muốn sao chép

Ví dụ

Ảnh sử dụng:

The Scream

Sử dụng getImageData() để đảo ngược màu từng điểm ảnh của một bức ảnh trên canvas:

Trình duyệt của bạn không hỗ trợ thẻ canvas trong HTML5.

Code:

Demo

0