@rytass/file-converter-adapter-image-watermark
Version:
Rytass Utils Storages Images Watermark
36 lines (32 loc) • 948 B
JavaScript
;
var sharp = require('sharp');
var stream = require('stream');
sharp.cache(false);
class ImageWatermark {
options;
constructor(options){
this.options = options;
sharp.concurrency(options.concurrency ?? 1);
}
async convert(file) {
let converter;
if (file instanceof Buffer) {
converter = sharp(file);
} else {
converter = sharp();
}
converter.composite(this.options.watermarks.map((watermark)=>({
input: watermark.image,
gravity: watermark.gravity || sharp.gravity.southeast
})));
// Stream cannot throw when format not supported
if (file instanceof stream.Readable) {
file.pipe(converter);
}
if (file instanceof Buffer) {
return converter.toBuffer();
}
return converter;
}
}
exports.ImageWatermark = ImageWatermark;