UNPKG

image-js

Version:

Image processing and manipulation in JavaScript

51 lines 1.63 kB
import { Image } from '../Image.js'; /** * Inverse of split. Merges multiple single-channel images into one. * @param images - An array of single-channel images. * @returns The merged image. */ export function merge(images) { const channels = images.length; let colorModel; switch (channels) { case 2: { colorModel = 'GREYA'; break; } case 3: { colorModel = 'RGB'; break; } case 4: { colorModel = 'RGBA'; break; } default: { throw new RangeError(`merge expects an array of two to four images. Received ${channels}`); } } const first = images[0]; if (first.channels !== 1) { throw new RangeError(`each image must have one channel. Received ${first.channels}`); } for (let i = 1; i < channels; i++) { const img = images[i]; if (img.channels !== 1) { throw new RangeError(`each image must have one channel. Received ${img.channels}`); } if (img.width !== first.width || img.height !== first.height || img.bitDepth !== first.bitDepth) { throw new RangeError('all images must have the same width, height and bitDepth'); } } const newImage = Image.createFrom(first, { colorModel }); for (let c = 0; c < channels; c++) { const img = images[c]; for (let i = 0; i < newImage.size; i++) { newImage.setValueByIndex(i, c, img.getValueByIndex(i, 0)); } } return newImage; } //# sourceMappingURL=merge.js.map