CanvasRenderingContext2D: createImageData() 方法

基线 广泛可用

此功能已经很成熟,可以在许多设备和浏览器版本上运行。它自 2015 年 7 月.

报告反馈

语法

**CanvasRenderingContext2D.createImageData()** 方法是 Canvas 2D API 的一部分,它创建了一个具有指定尺寸的新空白ImageData 对象。新对象中的所有像素都是透明黑色。
createImageData(width, height)
createImageData(width, height, settings)
createImageData(imagedata)

js

参数

width

要赋予新 ImageData 对象的宽度。负值会使矩形绕垂直轴翻转。

height

要赋予新 ImageData 对象的高度。负值会使矩形绕水平轴翻转。

settings 可选

  • 具有以下属性的对象
colorSpace:指定图像数据的颜色空间。可以设置为 "srgb" 表示 sRGB 颜色空间,或者设置为 "display-p3" 表示 display-p3 颜色空间

imagedata

要从中复制宽度和高度的现有 ImageData 对象。不会复制图像本身。

返回值

具有指定宽度和高度的新ImageData 对象。新对象中填充了透明黑色像素。

示例

如果 widthheight 参数为零,则会抛出此异常。

创建空白 ImageData 对象

此代码片段使用 createImageData() 方法创建一个空白 ImageData 对象。
<canvas id="canvas"></canvas>

html

**CanvasRenderingContext2D.createImageData()** 方法是 Canvas 2D API 的一部分,它创建了一个具有指定尺寸的新空白ImageData 对象。新对象中的所有像素都是透明黑色。
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] }

生成的 对象的宽度为 100 像素,高度为 50 像素,总共 5,000 个像素。ImageData 对象中的每个像素都包含四个数组值,因此对象的 data 属性的长度为 4 × 5,000,即 20,000。

填充空白 ImageData 对象

此代码片段使用 createImageData() 方法创建一个空白 ImageData 对象。
<canvas id="canvas"></canvas>

此示例创建了一个新的 ImageData 对象,并用紫色像素填充它。

**CanvasRenderingContext2D.createImageData()** 方法是 Canvas 2D API 的一部分,它创建了一个具有指定尺寸的新空白ImageData 对象。新对象中的所有像素都是透明黑色。
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);

由于每个像素都包含四个值,因此 for 循环以四个值的倍数递增。与每个像素关联的数组值分别是 R(红色)、G(绿色)、B(蓝色)和 A(alpha),按此顺序。

结果

更多示例

规范

有关使用 createImageData()ImageData 对象的更多示例,请参阅 使用 Canvas 进行像素操作ImageData.data
规范
# HTML 标准

浏览器兼容性

dom-context-2d-createimagedata-dev

另请参阅