Nodejs Sharp webp无损压缩
Nodejs Sharp webp lossless compression
我正在开发 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);
});
我看到 document 在选项中有一些字段:质量、alpha 质量、接近无损、力。你能试试吗?并与 IMGIX
比较
- quality: Number quality, integer 1-100 (optional, default 80)
- alphaQuality: Number quality of alpha layer, integer 0-100 (optional, default 100)
- lossless: Boolean use lossless compression mode (optional, default false)
- nearLossless: Boolean use near_lossless compression mode (optional, default false)
- force: Boolean force WebP output, otherwise attempt to use input format (optional, default 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);
});
有关如何使用 Sharp 的 webp output options is non-existent AFAICT, but according to this comment 选项的文档 nearLossless
和 quality
应该一起使用,而 lossless:true
选项等同于 nearLossless:true,quality:100
根据我的经验,nearLossless:true,quality:50
会将文件大小减少到不到 lossless:true
的一半,同时保留大部分质量。
我正在开发 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);
});
我看到 document 在选项中有一些字段:质量、alpha 质量、接近无损、力。你能试试吗?并与 IMGIX
比较
- quality: Number quality, integer 1-100 (optional, default 80)
- alphaQuality: Number quality of alpha layer, integer 0-100 (optional, default 100)
- lossless: Boolean use lossless compression mode (optional, default false)
- nearLossless: Boolean use near_lossless compression mode (optional, default false)
- force: Boolean force WebP output, otherwise attempt to use input format (optional, default 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);
});
有关如何使用 Sharp 的 webp output options is non-existent AFAICT, but according to this comment 选项的文档 nearLossless
和 quality
应该一起使用,而 lossless:true
选项等同于 nearLossless:true,quality:100
根据我的经验,nearLossless:true,quality:50
会将文件大小减少到不到 lossless:true
的一半,同时保留大部分质量。