UNPKG

@rytass/file-converter-adapter-image-watermark

Version:

Rytass Utils Storages Images Watermark

36 lines (32 loc) 948 B
'use strict'; 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;