image-js
Version:
Image processing and manipulation in JavaScript
29 lines • 1.21 kB
JavaScript
import { Image } from '../Image.js';
import { assert } from '../utils/validators/assert.js';
// TODO: Create nodejs version that throws an error
/**
* Draw the image in an HTML canvas.
* @param image - The image to draw.
* @param canvas - The HTML canvas.
* @param options - Write canvas options.
*/
export function writeCanvas(image, canvas, options = {}) {
if (image.colorModel !== 'RGBA') {
image = image.convertColor('RGBA');
}
if (image.bitDepth !== 8 && image instanceof Image) {
image = image.convertBitDepth(8);
}
const { resizeCanvas = true, dx = 0, dy = 0, dirtyX = 0, dirtyY = 0, dirtyWidth = image.width, dirtyHeight = image.height, } = options;
if (resizeCanvas) {
canvas.width = image.width;
canvas.height = image.height;
}
const ctx = canvas.getContext('2d');
assert(ctx);
const data = image.getRawImage().data;
ctx.putImageData(new ImageData(
// @ts-expect-error ImageData types don't support SharedArrayBuffer.
new Uint8ClampedArray(data.buffer, data.byteOffset, data.byteLength), image.width, image.height), dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
}
//# sourceMappingURL=writeCanvas.js.map