12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import defined from "./defined.js";
- const context2DsByWidthAndHeight = {};
- /**
- * Extract a pixel array from a loaded image. Draws the image
- * into a canvas so it can read the pixels back.
- *
- * @function getImagePixels
- *
- * @param {HTMLImageElement|ImageBitmap} image The image to extract pixels from.
- * @param {Number} width The width of the image. If not defined, then image.width is assigned.
- * @param {Number} height The height of the image. If not defined, then image.height is assigned.
- * @returns {ImageData} The pixels of the image.
- */
- function getImagePixels(image, width, height) {
- if (!defined(width)) {
- width = image.width;
- }
- if (!defined(height)) {
- height = image.height;
- }
- let context2DsByHeight = context2DsByWidthAndHeight[width];
- if (!defined(context2DsByHeight)) {
- context2DsByHeight = {};
- context2DsByWidthAndHeight[width] = context2DsByHeight;
- }
- let context2d = context2DsByHeight[height];
- if (!defined(context2d)) {
- const canvas = document.createElement("canvas");
- canvas.width = width;
- canvas.height = height;
- context2d = canvas.getContext("2d");
- context2d.globalCompositeOperation = "copy";
- context2DsByHeight[height] = context2d;
- }
- context2d.drawImage(image, 0, 0, width, height);
- return context2d.getImageData(0, 0, width, height).data;
- }
- export default getImagePixels;
|