files/en-us/web/api/canvasrenderingcontext2d/createimagedata/index.md
{{APIRef("Canvas API")}}
The CanvasRenderingContext2D.createImageData() method of
the Canvas 2D API creates a new, blank {{domxref("ImageData")}} object with the
specified dimensions. All of the pixels in the new object are transparent black.
createImageData(width, height)
createImageData(width, height, settings)
createImageData(imagedata)
width
ImageData object. A negative value flips the
rectangle around the vertical axis.height
ImageData object. A negative value flips the
rectangle around the horizontal axis.settings {{optional_inline}}
colorSpace
"srgb" for the sRGB color space or "display-p3" for the display-p3 color space.pixelFormat
"rgba-unorm8", for RGBA with 8 bit per component unsigned normalized format, using a {{jsxref("Uint8ClampedArray")}}."rgba-float16", for RGBA with 16 bits per component, using a {{jsxref("Float16Array")}}. Floating-point pixel values allow representing colors in arbitrarily wide gamuts and high dynamic range (HDR).imagedata
ImageData object from which to copy the width and height.
The image itself is not copied.A new {{domxref("ImageData")}} object with the specified width and height. The new object is filled with transparent black pixels.
IndexSizeError {{domxref("DOMException")}}
width or height arguments is zero.This snippet creates a blank ImageData object using the
createImageData() method.
<canvas id="canvas"></canvas>
The generated object is 100 pixels wide and 50 pixels tall, making 5,000 pixels in all.
Each pixel within an ImageData object consists of four array values, so the
object's {{domxref("ImageData.data", "data")}} property has a length of 4 × 5,000, or
20,000.
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] }
This example creates and fills a new ImageData object with purple pixels.
<canvas id="canvas"></canvas>
Since each pixel consists of four values, the for loop iterates by
multiples of four. The array values associated with each pixel are R (red), G (green), B
(blue), and A (alpha), in that order.
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);
{{EmbedLiveSample("Filling_a_blank_ImageData_object", 700, 180)}}
For more examples using createImageData() and the ImageData
object, see Pixel manipulation with canvas and {{domxref("ImageData.data")}}.
{{Specifications}}
{{Compat}}