使用Sharp压缩图像尺寸而无需更改图像的纵横比

时间:2018-07-26 15:42:16

标签: node.js sharp

我有一个aws图像文件,并且Iam使用Sharp压缩了图像,但是在压缩之后,文件大小大大增加了。就我而言,我的图片大小为6.5MB,压缩后的图片大小为19.5MB。

以下是我的代码:

[HiddenInput(DisplayValue = false)]
    public string LeaID { get; set; }

我什至尝试使用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()

同样的问题,文件大小正在增加。就我而言,应保持图像的宽高比。任何建议,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

这是Sharp的常见问题,但这是一个不错的软件包。阅读Sharp的{​​{1}} documentation

如果您需要玩耍; pngoptions.qualityoptions.colours来压缩大量的任何PNG图像,并根据其文档

需要使用支持libimagequant编译的libvips

因此,您需要options.dither的帮助才能实现目标。 根据该网站, libimagequant 是一个小型便携式C库,用于将RGBA图像高质量转换为8位索引颜色(调色板)图像。

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

libimagequant

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]