我想使用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的东西吗?
在我看来,这太疯狂了!我想念什么吗?
答案 0 :(得分:0)
弄清楚了。您可以像这样将其通过管道传送回$("form#yourform").submit(function(e) {
e.preventDefault();
var form = $(this);
var code=document.getElementById( "shop" ).value;
if(code) {
$.ajax({
type: 'post',
url: 'validations.php',
data: {
shop_code:code,
},
success: function (response) {
$( '#shop_data' ).html(response);
if(response=="OK") {
form.unbind('submit').submit()
}
}
});
} else {
$( '#shop_data' ).html("");
}
});
:
sharp()
然后,您可以调用resizedImage.png()
.pipe(new quant(['--quality=50-70', '--speed', '1', '-']))
.pipe(sharp());
或进一步调整大小(不是您通常那样做!)