我正在尝试使用node.js sharp package压缩PNG文件(大小超过1MB)。
var sharp = require('/usr/local/lib/node_modules/sharp');
sharp('IMG1.png')
.png({ compressionLevel: 9, adaptiveFiltering: true, force: true })
.withMetadata()
.toFile('IMG2.png', function(err){
if(err){
console.log(err);
} else {
console.log('done');
}
});
以上代码无效。我的文件大小约为3.5MB,我试图将其压缩大约1MB。
答案 0 :(得分:3)
尝试使用您提供的代码,它可以完美地工作,并且还可以在某种程度上压缩图像
var sharp = require('sharp');
sharp('input.png')
.png({ compressionLevel: 9, adaptiveFiltering: true, force: true })
.withMetadata()
.toFile('output.png', function(err) {
console.log(err);
});
答案 1 :(得分:0)
如果您曾尝试压缩位图/光栅图像,您会发现它的压缩效果不佳,它实际上只是压缩了元数据。
PNG 是一种无损格式,因此 quality
参数控制颜色深度。默认是无损的,quality: 100
保留了完整的颜色深度。当这个百分比减少时,它使用颜色 palette
并减少颜色。
var sharp = require('/usr/local/lib/node_modules/sharp');
sharp('IMG1.png')
.withMetadata() // I'm guessing set the metadata before compression?
.png({
quality: 95, // play around with this number until you get the file size you want
compression: 6, // this doesn't need to be set, it is by default, no need to increase compression, it will take longer to process
})
.toFile('IMG2.png', function(err){
if(err){
console.log(err);
} else {
console.log('done');
}
});