14

我想使用sharpin调整图像大小和压缩图像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吗?

4

3 回答 3

6

如果您希望输出格式与输入格式相匹配,您应该查看forceoption。

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

于 2019-08-16T21:46:44.807 回答
1

您可以使用方法抓取文件格式metadata并为其选择相应的优化方法:

const image = sharp('_4_.jpg')
const meta = await image.metadata()
const { format } = meta

const config = {
  jpeg: { quality: 80 },
  webp: { quality: 80 },
  png: {compressionLevel: 8},
}

await image[format](config[format])
  .resize(1000)

于 2021-10-07T12:28:52.680 回答
0

PNG 也是quality,但由于它是无损格式,因此100默认设置为。Where-as JPG80默认设置为。

通过减少qualityPNG 的值,它将启用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})

于 2021-07-20T21:29:00.600 回答