UNPKG

image-js

Version:

Image processing and manipulation in JavaScript

49 lines 1.57 kB
import { Image } from '../Image.js'; import checkProcessable from '../utils/validators/checkProcessable.js'; /** * Apply a gradient filter to an image. * @param image - The image to process. * @param options - Gradient filter options. * @returns The gradient image. */ export function gradientFilter(image, options) { const { borderType = 'replicate', borderValue = 0 } = options; checkProcessable(image, { bitDepth: [8, 16], colorModel: 'GREY', }); if ('kernelX' in options && 'kernelY' in options) { const { kernelX, kernelY } = options; const gradientX = image.rawDirectConvolution(kernelX, { borderType, borderValue, }); const gradientY = image.rawDirectConvolution(kernelY, { borderType, borderValue, }); const gradient = new Image(image.width, image.height, { colorModel: 'GREY', }); for (let i = 0; i < image.size; i++) { gradient.setValueByIndex(i, 0, Math.hypot(gradientX[i], gradientY[i])); } return gradient; } else if ('kernelX' in options) { return image.directConvolution(options.kernelX, { borderType, borderValue, }); } else if ('kernelY' in options) { return image.directConvolution(options.kernelY, { borderType, borderValue, }); } else { throw new TypeError(`kernelX and KernelY are not defined`); } } //# sourceMappingURL=gradientFilter.js.map