遍历另一个模块后获取“清晰”元数据

时间:2018-06-26 21:28:41

标签: node.js sharp

我想使用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的东西吗?

在我看来,这太疯狂了!我想念什么吗?

1 个答案:

答案 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()); 或进一步调整大小(不是您通常那样做!)