我在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) {});
所以关于如何使图像更小的任何建议?
任何建议表示赞赏
答案 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')