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).
Исключения
-
IndexSizeErrorDOMException -
Выбрасывается, если
swилиshравны нулю. -
SecurityErrorDOMException -
Холст содержит или может содержать пиксели, загруженные из источника, отличного от источника загрузки самого документа. Чтобы избежать выброса
SecurityErrorDOMExceptionв этой ситуации, настройте 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