Метод getImageData

Метод возвращает данные о цвете (RGB) и прозрачности указанного участка холста.

Синтаксис

getImageData(sx, sy, sw, sh)

Параметры

  • sx и sy — координаты левого верхнего угла прямоугольника;
  • sw — ширина участка;
  • sh — высота участка.

Метод возвращает значения в виде массива. Например, получим данные по одному пикселю

var imageData = ctx.getImageData(10,10,1,1);

Получим данные в таком виде:

  • imageData.data[0] — значение красного цвета (число от 0 до 255);
  • imageData.data[1] — значение зеленого цвета (число от 0 до 255);
  • imageData.data[2] — значение синего цвета (число от 0 до 255);
  • imageData.data[3] — значение прозрачности (число от 0 до 255);

Такой массив будет если получать данные одного пикселя на холсте. Если же значения sw и sh будут больше единицы, массив увеличится (эти значения определяют размер массива). Для примера получим данные области 2х2:

var Pixels = ctx.getImageData(10,10,2,2);

Данные вернуться одномерным массивом размером 4x2x2 (2x2 — 4 пикселя на каждый из которых 4 значения):

getImageData
getImageData

Пример

ctx.fillStyle = "red";
ctx.fillRect(10,10,100,40);
ctx.fillStyle = "green";
ctx.globalAlpha = "0.5";
ctx.fillRect(90,30,50,50);

var Pixel = ctx.getImageData(10,10,1,1); 
alert("Pixel 1: "+ Pixel.data[0]+", "+Pixel.data[1]+", "+ Pixel.data[2]+", "+ Pixel.data[3]); 

var Pixel = ctx.getImageData(90,30,1,1); 
alert("Pixel 2: "+ Pixel.data[0]+", "+Pixel.data[1]+", "+ Pixel.data[2]+", "+ Pixel.data[3]);

В живую.

Заметки

  • При работе с изображениями расположенными на локальном диске может возникнуть ошибка NS_ERROR_DOM_SECURITY_ERR. Чтобы этого избежать используйте для отладки сервер.
  • Метод getImageData является ресурсоемкой операцией, по возможности следует ее избегать;
  • При определении значений цветов, будут возвращены значения цвета, которые фактически видит пользователь, а не те, которые указанны fillStyle/strokeStyle.

Материалы

Теги: , ,
Показать комментарии