Spec-Zone.ru › Web APIs

CanvasRenderingContext2D: метод getImageData()

Базовая Широко поддерживается

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Метод CanvasRenderingContext2D API холста 2D возвращает объект ImageData, представляющий данные пикселей для заданной части холста.

Этот метод не зависит от матрицы преобразования холста. Если заданный прямоугольник выходит за пределы холста, пиксели за пределами холста будут прозрачными черными в возвращаемом объекте ImageData.

Примечание: Данные изображения можно нарисовать на холсте с помощью метода putImageData().

Дополнительную информацию о getImageData() и общем манипулировании содержимым холста см. в разделе Манипулирование пикселями с помощью холста.

Синтаксис

getImageData(sx, sy, sw, sh)
getImageData(sx, sy, sw, sh, settings)

Параметры

sx

Координата x левого верхнего угла прямоугольника, из которого будут извлечены ImageData.

sy

Координата y левого верхнего угла прямоугольника, из которого будут извлечены ImageData.

sw

Ширина прямоугольника, из которого будут извлечены ImageData. Положительные значения - вправо, отрицательные - влево.

sh

Высота прямоугольника, из которого будут извлечены ImageData. Положительные значения - вниз, отрицательные - вверх.

settings Необязательно

Объект со следующими свойствами:

  • colorSpace: Определяет цветовое пространство данных изображения. Может быть установлено в "srgb" для цветового пространства sRGB или "display-p3" для цветового пространства display-p3.

Возвращаемое значение

Объект ImageData с данными изображения для прямоугольника холста. Координаты левого верхнего угла прямоугольника — (sx, sy), а координаты правого нижнего угла — (sx + sw - 1, sy + sh - 1).

Исключения

IndexSizeError DOMException

Выбрасывается, если sw или sh равны нулю.

SecurityError DOMException

Холст содержит или может содержать пиксели, загруженные из источника, отличного от источника загрузки самого документа. Чтобы избежать выброса SecurityError DOMException в этой ситуации, настройте CORS, чтобы разрешить использование исходного изображения таким образом. См. Разрешение использования изображений и холста из другого источника.

Примеры

Получение данных изображения с холста

В этом примере рисуется изображение, а затем используется getImageData() для получения части холста.

Мы используем getImageData() для извлечения части изображения, начиная с (10, 20), шириной 80 и высотой 230. Затем мы рисуем этот фрагмент три раза, размещая фрагменты последовательно ниже и правее последнего фрагмента.

HTML

<canvas id="canvas" width="700" height="400"></canvas>

JavaScript

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

const image = new Image();
image.src = "plumeria.jpg";
image.addEventListener("load", () => {
  ctx.drawImage(image, 0, 0, 233, 320);

  const imageData = ctx.getImageData(10, 20, 80, 230);
  ctx.putImageData(imageData, 260, 0);
  ctx.putImageData(imageData, 380, 50);
  ctx.putImageData(imageData, 500, 100);
});

Результат

Преобразование цветового пространства

Необязательное свойство colorSpace позволяет получить данные изображения в нужном формате.

const context = canvas.getContext("2d", { colorSpace: "display-p3" });
context.fillStyle = "color(display-p3 0.5 0 0)";
context.fillRect(0, 0, 10, 10);

// Get ImageData converted to sRGB
const imageData = context.getImageData(0, 0, 1, 1, { colorSpace: "srgb" });
console.log(imageData.colorSpace); // "srgb"

Спецификации

Спецификация
HTML
# dom-context-2d-getimagedata-dev

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
getImageData 2 12
2С Firefox 5, getImageData теперь корректно принимает прямоугольники, выходящие за пределы холста; пиксели за пределами холста возвращаются как прозрачные чёрные, а также теперь возвращает по крайней мере один пиксель данных изображения, если указан прямоугольник размером меньше одного пикселя.
9.5 4 18
4С Firefox для Android 5, getImageData теперь корректно принимает прямоугольники, выходящие за пределы холста; пиксели за пределами холста возвращаются как прозрачные чёрные, а также теперь возвращает по крайней мере один пиксель данных изображения, если указан прямоугольник размером меньше одного пикселя.
10.1 3.2 1.0 ≤37

См. также

  • Интерфейс, определяющий этот метод: CanvasRenderingContext2D
  • Объект ImageData
  • CanvasRenderingContext2D.putImageData()
  • Манипулирование пикселями с помощью холста

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getImageData

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API