image-js
Version:
Image processing and manipulation in JavaScript
35 lines (32 loc) • 1.09 kB
text/typescript
import { Image } from '../Image.js';
import { getClamp } from '../utils/clamp.js';
import checkProcessable from '../utils/validators/checkProcessable.js';
import { validateForComparison } from '../utils/validators/validators.js';
/**
*
* Calculate a new image that is the sum between the current image and the otherImage.
* @param image - Image to which to add.
* @param otherImage - Image to add.
* @returns The summed image.
*/
export function add(image: Image, otherImage: Image): Image {
if (image instanceof Image) {
checkProcessable(image, {
bitDepth: [8, 16],
components: [1, 3],
alpha: false,
});
}
validateForComparison(image, otherImage);
const newImage = image.clone();
const clamp = getClamp(image);
for (let index = 0; index < image.size; index++) {
for (let channel = 0; channel < image.channels; channel++) {
const value =
image.getValueByIndex(index, channel) +
otherImage.getValueByIndex(index, channel);
newImage.setValueByIndex(index, channel, clamp(value));
}
}
return newImage;
}