Я хочу сжать изображение, используя Sharp
библиотеку обработки изображений, передать его через внешнюю библиотеку quant
и затем получить точные метаданные для него. Я хочу сделать это для фактического наложения размера сжатого изображения на изображение (только во время разработки).
Для WEBP это легко, потому что все находится на острие.
// specify the compression
myImage.webp({ quality: 80 });
// actually compress it
var tempBuffer = await myImage.toBuffer({ resolveWithObject: true});
// create a new sharp object to read the metadata
var compressedImage = sharp(tempBuffer.data);
// Image data is now available in
console.log(compressedImage.info.size / 1024);
Но когда я использую библиотеку quant
, я передаю ее в стороннюю библиотеку, и она больше не является острым предметом. Мне нужно снова извлечь необработанный буфер наиболее эффективным способом. Я новичок в Node.js и не знаю, как это сделать.
resizedImage.png()
.pipe(new quant(['--quality=50-70', '--speed', '1', '-']));
Нужно ли использовать что-то вроде https://www.npmjs.com/package/stream-to-array?
Это кажется мне безумным! Я что-то упустил?