3

我正在开发类似的 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);
});
4

2 回答 2

4

我看到该文件在选项中有一些文件:质量,alphaQuality,nearLossless,force。你能试试吗?并与 IMGIX 进行比较

  • quality:数字质量,整数1-100(可选,默认80)
  • alphaQuality : alpha 层的数字质量,整数 0-100(可选,默认 100)
  • lossless:布尔使用无损压缩模式(可选,默认false)
  • nearLossless:布尔使用 near_lossless 压缩模式(可选,默认 false)
  • force:布尔强制 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);
});
于 2019-03-09T04:46:54.033 回答
3

关于如何使用 Sharp 的webp 输出选项的文档不存在 AFAICT,但根据此评论,选项nearLosslessquality应该一起使用,而lossless:true选项相当于nearLossless:true,quality:100

以我的经验,nearLossless:true,quality:50将文件大小减少到一半以下lossless:true,同时保留大部分质量。

于 2021-03-28T16:22:22.637 回答