Spec-Zone.ru › Web APIs

CanvasRenderingContext2D: метод createImageData()

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

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

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

Метод CanvasRenderingContext2D.createImageData() API 2D-канала холста создаёт новый, пустой объект ImageData с указанными размерами. Все пиксели в новом объекте — прозрачный чёрный цвет.

Синтаксис

createImageData(width, height)
createImageData(width, height, settings)
createImageData(imagedata)

Параметры

width

Ширина нового объекта ImageData. Отрицательное значение переворачивает прямоугольник относительно вертикальной оси.

height

Высота нового объекта ImageData. Отрицательное значение переворачивает прямоугольник относительно горизонтальной оси.

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

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

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

Существующий объект ImageData , из которого следует скопировать ширину и высоту. Само изображение не копируется.

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

Новый объект ImageData с указанной шириной и высотой. Новый объект заполняется прозрачными чёрными пикселями.

Исключения

IndexSizeError DOMException

Выбрасывается, если любой из аргументов width или height равен нулю.

Примеры

Создание пустого объекта ImageData

Этот фрагмент создаёт пустой объект ImageData с помощью метода createImageData().

<canvas id="canvas"></canvas>

Созданный объект имеет ширину 100 пикселей и высоту 50 пикселей, что в сумме составляет 5000 пикселей. Каждый пиксель в объекте ImageData состоит из четырёх значений массива, поэтому свойство data объекта имеет длину 4 × 5000, или 20000.

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

const imageData = ctx.createImageData(100, 50);
console.log(imageData);
// ImageData { width: 100, height: 50, data: Uint8ClampedArray[20000] }

Заполнение пустого объекта ImageData

В этом примере создаётся и заполняется новый объект ImageData фиолетовыми пикселями.

<canvas id="canvas"></canvas>

Так как каждый пиксель состоит из четырёх значений, цикл for увеличивает счётчик на четыре. Значения массива, связанные с каждым пикселем, это R (красный), G (зелёный), B (синий) и A (альфа) в указанном порядке.

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const imageData = ctx.createImageData(100, 100);

// Iterate through every pixel
for (let i = 0; i < imageData.data.length; i += 4) {
  // Modify pixel data
  imageData.data[i + 0] = 190; // R value
  imageData.data[i + 1] = 0; // G value
  imageData.data[i + 2] = 210; // B value
  imageData.data[i + 3] = 255; // A value
}

// Draw image data to the canvas
ctx.putImageData(imageData, 20, 20);

Результат

Дополнительные примеры

Дополнительные примеры с использованием createImageData() и объекта ImageData можно найти в обработке пикселей с помощью холста и ImageData.data.

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

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

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

Настольный компьютер Мобильный телефон
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
createImageData 2 12 3.5 ≤12.1 4 18 4 ≤12.1 3.2 1.0 ≤37

См. также

  • Интерфейс, определяющий этот метод: CanvasRenderingContext2D
  • ImageData
  • Манипулирование пикселями с помощью canvas

© 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/createImageData

Spec-Zone.ru

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