browsertime
Version:
Get performance metrics from your web page using Browsertime.
81 lines (74 loc) • 1.86 kB
JavaScript
import path from 'node:path';
import { pathToFolder } from '../pathToFolder.js';
import { loadCustomJimp } from '../../screenshot/loadCustomJimp.js';
import { getLogger } from '@sitespeed.io/log';
const log = getLogger('browsertime');
export async function savePngWithoutResize(
name,
data,
url,
storageManager,
dir,
options
) {
return storageManager.writeData(
`${name}.png`,
data,
path.join(pathToFolder(url, options), dir)
);
}
export async function savePng(
name,
data,
url,
storageManager,
config,
dir,
options
) {
const jimp = await loadCustomJimp();
if (jimp) {
const image = await jimp.read(data);
const buffer = await image
.scaleToFit({ w: config.maxSize, h: config.maxSize })
.getBuffer('image/png');
return storageManager.writeData(
`${name}.png`,
buffer,
path.join(pathToFolder(url, options), dir)
);
} else {
log.info(
'Missing Jimp dependency so you can only save images as png at viewport size'
);
return savePngWithoutResize(name, data, url, storageManager, dir, options);
}
}
export async function saveJpg(
name,
data,
url,
storageManager,
config,
dir,
options
) {
const jimp = await loadCustomJimp();
if (jimp) {
const image = await jimp.read(data);
// https://github.com/sitespeedio/sitespeed.io/issues/3922
const buffer = await image
.scaleToFit({ w: config.maxSize, h: config.maxSize })
.getBuffer('image/jpeg', { quality: config.jpg.quality });
return storageManager.writeData(
`${name}.jpg`,
buffer,
path.join(pathToFolder(url, options), dir)
);
} else {
log.info(
'Missing Jimp dependency so you can only save images as png at viewport size'
);
return savePngWithoutResize(name, data, url, storageManager, dir, options);
}
}