使用GraphicsMagick优化图像

时间:2015-07-11 09:06:49

标签: image-processing graphicsmagick

我在node.js中使用GraphicsMagick,我有很多(数千)我需要尽可能优化。每一个都是250 * 250 PX,我需要将它们制作成50 * 50,但这很容易。

问题是如何优化它们。

通过优化它们,我的意思是将它们变成jpeg或png(它们更小)并降低质量(如果需要)和其他东西......

我的代码到目前为止......

gm(temp_location + file_name)
.gravity('Center')
.extent(50, 50)
.noProfile()
.write(new_location + "s"+name, function (err) {});

所以关于如何使图像更小的任何建议?
任何建议表示赞赏

2 个答案:

答案 0 :(得分:2)

对于JPEG(最适合照片和其他自然图像),降低质量(这意味着图像质量)将有所帮助。尝试-quality 40或更低。

对于PNG(最适合艺术线条),将颜色限制在254或更少并提高质量(实际上意味着压缩等级)可能会有所帮助。对于颜色数量有限的PNG,请使用"质量"这是10的偶数倍,因为第二个数字指定了PNG滤波器方法,它应该是" 0"这意味着没有过滤。尝试-quality 90。

答案 1 :(得分:0)

上述答案的补充,涉及GIF格式优化。

GraphicsMagick documentation对于JPEG或PNG压缩非常清楚,但是在输出GIF文件时(这是我的情况...),这些压缩功能似乎不适用。

通过使用以下代码,我设法将GIF输出文件的大小减少了52%:

var gm = require('gm');
gm()
.in(input_filename1)
.in(input_filename2)    
.bitdepth(8)
.colors(192)
.dither(false)
.filter('Point') // filter before resize to have a 'sharp big pixels' aspect
.antialias(false)
.resize(magnify_factor*size_x, magnify_factor*size_y, "!") 
.write(output_filename, function (err) {
    if (!err) console.log('gif file created!');
});

这是我尝试过的其他功能,但在处理GIF时似乎没有作用

.limit("disk", "500KB") 
// this limits resource used but does not limit the output filesize

.quality(10)

.compress('LZW')