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

Has*_*mad 5 javascript image-processing image-compression node.js sharp

我想调整和使用压缩图像sharpnode.js

锐利的jpeg存在单独的压缩,因为webp存在单独的压缩,并且存在单独的压缩png

WEBP

sharp('a.jpg')
.resize(1000)
.webp({quality: 80})
Run Code Online (Sandbox Code Playgroud)

JPEG格式

sharp('_4_.jpg')
 .resize(1000)
 .jpeg({quality: 80})
Run Code Online (Sandbox Code Playgroud)

PNG

sharp('_4_.jpg')
 .resize(1000)
 .png({compressionLevel: 8})
Run Code Online (Sandbox Code Playgroud)

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

有什么用sharp吗?

Kuz*_*zzy 8

您可以使用方法获取文件格式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)

Run Code Online (Sandbox Code Playgroud)


小智 5

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

sharp(input)
  .jpeg({ progressive: true, force: false })
  .png({ progressive: true, force: false })
  ...
Run Code Online (Sandbox Code Playgroud)

不支持 GIF 输出,所以 GIF 输入会默认变成 PNG 输出。

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


son*_*njz 5

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

通过减少qualityPNG,它将启用palette减少编码中捕获的颜色数量的模式。这将为文件提供良好的尺寸减小。

compression只是 zlib / zip 压缩,还没有发现它有多大作用。

全部在文档中: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})

Run Code Online (Sandbox Code Playgroud)