在node.js中使用Sharp压缩图像

时间:2018-07-11 17:57:40

标签: javascript node.js image-processing image-compression sharp

我想使用sharp中的node.js调整图像大小并压缩图像

jpeg中,有单独的压缩;对于webp,有单独的压缩;对于png,有单独的压缩。

WEBP

sharp('a.jpg')
.resize(1000)
.webp({quality: 80})

JPEG

sharp('_4_.jpg')
 .resize(1000)
 .jpeg({quality: 80})

PNG

sharp('_4_.jpg')
 .resize(1000)
 .png({compressionLevel: 8})

基本上我想压缩图像并调整其大小,而不检查它们的格式。

sharp中有什么用吗?

2 个答案:

答案 0 :(得分:2)

如果您希望输出格式与输入格式匹配,则应查看force选项。

sharp(input)
  .jpeg({ progressive: true, force: false })
  .png({ progressive: true, force: false })
  ...

不支持GIF输出,因此默认情况下,GIF输入将变为PNG输出。

其他参考:https://sharp.readthedocs.io/en/v0.17.0/api-output/#jpeg

答案 1 :(得分:0)

PNG 也是 quality,但由于它是无损格式,因此默认设置为 100。其中 JPG 默认设置为 80

通过减少 PNG 的 quality,它将启用 palette 模式,这将减少编码中捕获的颜色数量。这将为文件大小提供一些很好的缩减。

compression 只是 zlib / zip 压缩,还没有发现它做太多 TBH。

文档中的所有内容:https://sharp.pixelplumbing.com/api-output#png

// this will disable loss-less mode, and reduce the colour accuracy to 90%
// it will also enable the palette
sharp('_4_.jpg')
 .resize(1000)
 .png({quality: 90})