Płótno HTML Metoda getImageData()

❮ Odniesienie do płótna HTML

Przykład

Poniższy kod kopiuje dane pikseli dla określonego prostokąta na kanwę za pomocą getImageData(), a następnie umieszcza dane obrazu z powrotem na kanwie za pomocą 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);
}

Obsługa przeglądarki

Liczby w tabeli określają pierwszą wersję przeglądarki, która w pełni obsługuje tę metodę.

Method
getImageData() Yes 9.0 Yes Yes Yes

Definicja i użycie

Metoda getImageData() zwraca obiekt ImageData, który kopiuje dane pikseli dla określonego prostokąta na kanwie.

Uwaga: Obiekt ImageData nie jest obrazem, określa część (prostokąt) na kanwie i przechowuje informacje o każdym pikselu wewnątrz tego prostokąta.

Dla każdego piksela w obiekcie ImageData istnieją cztery informacje, wartości RGBA:

R - Kolor czerwony (od 0-255)
G - Kolor zielony (od 0-255)
B - Kolor niebieski (od 0-255)
A - Kanał alfa (od 0-255; 0 jest przezroczysty, a 255 to w pełni widoczne)

Informacje o kolorze/alfa są przechowywane w tablicy i są przechowywane we właściwości data obiektu ImageData.

Wskazówka: Po manipulowaniu informacjami o kolorze/alfa w tablicy możesz skopiować dane obrazu z powrotem na kanwę za pomocą metody putImageData() .

Przykład:

Kod do pobierania informacji o kolorze/alfa pierwszego piksela w zwróconym obiekcie ImageData:

red=imgData.data[0];
green=imgData.data[1];
blue=imgData.data[2];
alpha=imgData.data[3];

Porada: Możesz również użyć metody getImageData(), aby odwrócić kolor każdego piksela obrazu na kanwie.

Przejdź przez wszystkie piksele i zmień wartości kolorów za pomocą tego wzoru:

red=255-old_red;
green=255-old_green;
blue=255-old_blue;

Zobacz poniżej przykład „Wypróbuj sam”!


Składnia JavaScript

Składnia JavaScript: kontekst .getImageData( x,y,szerokość,wysokość );

Wartości parametrów

Parameter Description
x The x coordinate (in pixels) of the upper-left corner to start copy from
y The y coordinate (in pixels) of the upper-left corner to start copy from
width The width of the rectangular area you will copy
height The height of the rectangular area you will copy

Więcej przykładów

Obraz do użycia:

Krzyk

Przykład

Użyj getImageData(), aby odwrócić kolor każdego piksela obrazu na płótnie:

Twoja przeglądarka nie obsługuje tagu HTML5canvastag.

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
var i;
for (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);

❮ Odniesienie do płótna HTML