UNPKG

image-js

Version:

Image processing and manipulation in JavaScript

45 lines (43 loc) 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = extendedPoints; /** * Allows to generate an array of points for a binary image (bit depth = 1) * The points consider the beginning and the end of each pixel * This method is only used to calculate minimalBoundRectangle * @memberof Image * @instance * @return {Array<Array<number>>} - an array of [x,y] corresponding to the set pixels in the binary image */ function extendedPoints() { this.checkProcessable('extendedPoints', { bitDepth: [1] }); const pixels = []; for (let y = 0; y < this.height; y++) { for (let x = 0; x < this.width; x++) { if (this.getBitXY(x, y) === 1) { pixels.push([x, y]); if (this.getBitXY(x + 1, y) !== 1) { pixels.push([x + 1, y]); pixels.push([x + 1, y + 1]); if (this.getBitXY(x, y + 1) !== 1) { pixels.push([x, y + 1]); } } else { if (this.getBitXY(x, y + 1) !== 1) { pixels.push([x, y + 1]); pixels.push([x + 1, y + 1]); } } // this small optimization allows to reduce dramatically the number of points for MBR calculation while (x < this.width - 2 && this.getBitXY(x + 1, y) === 1 && this.getBitXY(x + 2, y) === 1) { x++; } } } } return pixels; }