gpt4 book ai didi

node.js - 使用 Sharp 在不改变图像纵横比的情况下压缩图像大小

转载 作者:行者123 更新时间:2023-12-05 07:31:57 27 4
gpt4 key购买 nike

我有一个 aws 图像文件,我正在使用 sharp 压缩图像,但压缩后,文件大小大幅增加。就我而言,我的图像大小为 6.5MB,压缩后变为 19.5MB。

以下是我的代码:

const width = parseInt(image.height);
const height = parseInt(image.width);

var getObjectParams = {
Bucket: BUCKET,
Key: FILE_NAME
}

s3.getObject(getObjectParams).promise()
.then(data => {
sharp(data.Body)
.resize(width, height)
.ignoreAspectRatio()
.toFormat('png')
.toBuffer()
.then((buffer) => {
........
........
}

我什至尝试过使用 .max() ,

 sharp(data.Body)
.withoutEnlargement()
.resize(width, height)
.toFormat('png')
.toBuffer()

同样的问题,文件大小越来越大。在我的例子中,应该保持图像纵横比。任何建议,将不胜感激。谢谢

最佳答案

这是 Sharp 的一个常见问题,但这是一个很棒的软件包。阅读Sharp documentation用于 png

如果你需要玩玩;options.qualityoptions.coloursoptions.dither 压缩大量 PNG 图像,根据其文档,

requires libvips compiled with support for libimagequant

因此您需要libimagequant 的帮助来实现您的目标。根据该网站,libimagequant 是一个小型、可移植的 C 库,用于将 RGBA 图像高质量地转换为 8 位索引颜色(调色板)图像。

相反,您可以使用 this NPM PACKAGE called imagemin我确信它使用相同的方法来压缩 PNG 图像。通过如下一小段代码,您可以减小 PNG 的大小。

const files = await imagemin(['images/*.{png}'], {
destination: 'build/images',
plugins: [
imageminJpegtran(),
imageminPngquant({
quality: [0.6, 0.8]
})
]
});

使用 quality: [0.6, 0.8]quality: [0.2, 0.2] 来减小大小,你可以像 >const files = await imagemin(['fileName.png']

关于node.js - 使用 Sharp 在不改变图像纵横比的情况下压缩图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com