首页 > 解决方案 > Node.js 的 GraphicsMagick 可以处理不固定数量的图像以输出 GIF 序列吗?

问题描述

我正在使用GraphicsMagick for Node.js从 16 个 jpg 图像生成 GIF 序列。这很好用。但是,当我使用该功能时,目前我硬编码了序列中的图像数量gm().in

我找不到使这个数字动态化的方法或其他功能。

这是我的代码:

var tmp_filenames = [];
var nNbStates = 16;

for (var nStateNum=0; nStateNum < nNbStates; nStateNum++)
{
    tmp_filenames.push('mypath\myinputfilename' + nStateNum + '.jpg');
}

var gm = require('gm');
gm()
.in(tmp_filenames[0])
.in(tmp_filenames[1])
.in(tmp_filenames[2])
.in(tmp_filenames[3])
.in(tmp_filenames[4])
.in(tmp_filenames[5])
.in(tmp_filenames[6])
.in(tmp_filenames[7])
.in(tmp_filenames[8])
.in(tmp_filenames[9])
.in(tmp_filenames[10])
.in(tmp_filenames[11])
.in(tmp_filenames[12])
.in(tmp_filenames[13])
.in(tmp_filenames[14])
.in(tmp_filenames[15])  
.write(output_filename, function (err) {
    if (!err) console.log('gif file created!');
});

谢谢阅读。

标签: node.jsanimated-gifgraphicsmagick

解决方案


好的,我找到了解决方案。我不熟悉这种使用变量和函数的方式这应该可以:

var tmp_filenames = [];
var nNbStates = 16;
var bmp = gm();

for (var nStateNum=0; nStateNum < nNbStates; nStateNum++)
{
    tmp_filenames.push('mypath\myinputfilename' + nStateNum + '.jpg');
    bmp.in(tmp_filenames[nStateNum])
}

.write(output_filename, function (err) {
    if (!err) console.log('gif file created!');
});

推荐阅读