const path = require('node:path'); const fs = require('node:fs'); const concolor = require('concolor'); const gm = require('gm').subClass({ imageMagick: true }); const { liquidRescale } = require('../dist/index.js'); const { Suite } = require('benchmark'); const image = fs.readFileSync(path.join(path.resolve(), 'benchmark', 'bear.png')); const suite = new Suite("Liquid rescale and resize image"); function liquidRescaleWithGm() { return new Promise((resolve, reject) => { gm(image).size((err, size) => { if (err) reject(err); const width = size.width; const height = size.height; gm(image).out('-liquid-rescale', "400x400") .toBuffer('JPEG', (err, buf) => { if (err) reject(err); gm(buf).resize(width, height) .toBuffer('JPEG', (err, buf) => { err ? reject(err) : resolve(buf); }); }); }); }); } suite .add('gm', async () => { await liquidRescaleWithGm(); }) .add('native', async () => { await liquidRescale(image, 400, 400); }) .on('cycle', (event) => console.info(String(event.target))) .on('complete', function () { console.info(`${this.name} bench suite: Fastest is ${concolor`${this.filter('fastest').map('name')}(green)`}`); }) .run({ async: true });