UNPKG

image-js

Version:

Image processing and manipulation in JavaScript

45 lines (44 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateKernel = validateKernel; var _isInteger = _interopRequireDefault(require("is-integer")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function validateKernel(kernel) { let kHeight, kWidth; if (Array.isArray(kernel)) { if (Array.isArray(kernel[0])) { // 2D array if ((kernel.length & 1) === 0 || (kernel[0].length & 1) === 0) { throw new RangeError('validateKernel: Kernel rows and columns should be odd numbers'); } else { kHeight = Math.floor(kernel.length / 2); kWidth = Math.floor(kernel[0].length / 2); } } else { let kernelWidth = Math.sqrt(kernel.length); if ((0, _isInteger.default)(kernelWidth)) { kWidth = kHeight = Math.floor(Math.sqrt(kernel.length) / 2); } else { throw new RangeError('validateKernel: Kernel array should be a square'); } // we convert the array to a matrix let newKernel = new Array(kernelWidth); for (let i = 0; i < kernelWidth; i++) { newKernel[i] = new Array(kernelWidth); for (let j = 0; j < kernelWidth; j++) { newKernel[i][j] = kernel[i * kernelWidth + j]; } } kernel = newKernel; } } else { throw new Error(`validateKernel: Invalid Kernel: ${kernel}`); } return { kernel, kWidth, kHeight }; }