Nodejs Sharp webp无损压缩
Posted
技术标签:
【中文标题】Nodejs Sharp webp无损压缩【英文标题】:Nodejs Sharp webp lossless compression 【发布时间】:2019-07-24 00:31:18 【问题描述】:我正在开发类似的 Imgix 服务,我正在使用 Sharp。
但是 webp 无损压缩 Imgix 得到的效果比 Sharp 好。在 Imgix 中具有相同宽度和高度的相同图像有 453 KB 和 Sharp 1.3 MB。
在不损失质量的情况下增加压缩率的一些建议?
我正在使用的代码:
https.get(url, function (response)
let transform = sharp().toFormat('webp').resize(width, height);
return response.pipe(transform).webp(lossless:true).pipe(res);
);
【问题讨论】:
您能否就您的问题与 Imgix 和 Sharp 共享两个压缩文件? ic.imgix.net/1/5c473f5253098?format=webp&lossless=1 IMGIX lossless: 138kb 与Sharp webp lossless相同的图像有436kb 【参考方案1】:关于如何使用 Sharp 的 webp output options 的文档不存在 AFAICT,但根据此 comment 选项 nearLossless
和 quality
应该一起使用,而 lossless:true
选项等效于 @987654326 @
根据我的经验,nearLossless:true,quality:50
会将文件大小减少到不到lossless:true
的一半,同时保留大部分质量。
【讨论】:
【参考方案2】:我看到document 在选项中有一些文件:质量、alphaQuality、nearLossless、force。你能试试吗?并与 IMGIX 比较
质量:数字质量,1-100整数(可选,默认80) alphaQuality:alpha层的数字质量,整数0-100(可选,默认100) 无损:布尔使用无损压缩模式(可选,默认false) nearLossless:布尔使用near_lossless压缩模式(可选,默认false) force:Boolean 强制 WebP 输出,否则尝试使用输入格式(可选,默认 true)
https.get(url, function (response)
let transform = sharp().toFormat('webp').resize(width, height);
return response.pipe(transform).webp(lossless:true, quality: 60, alphaQuality: 80, force: false).pipe(res);
);
【讨论】:
以上是关于Nodejs Sharp webp无损压缩的主要内容,如果未能解决你的问题,请参考以下文章