比方说images
是路径字符串的一个这样的数组:
[ "/home/user/first.jpg", "/home/user/a.png", "/home/user/another.gif" ];
那么这应该工作:
var gm = require('gm');
var gmstate = gm(images[0]);
for (var i = 1; i < images.length; i++) gmstate.append(images[i]);
// finally write out the file asynchronously
gmstate.write('/home/user/result.png', function (err) {
if (!err) console.log('Hooray!');
});
的理念是:
- 以graphicsmagick状态变量开始
gmstate
- 同步地追加到循环中。
write()
做了真正的工作,这是异步的。
这相当于gm('first').append('second').append('third')....append('last')
。
也许有可能从空状态开始:var gmstate = gm();
。
我不得不承认,在LeeNX的答案中,@
文件列表破解如果你有一个文件列表,但如果你不... ...?
编辑:如果您需要将图像水平方向追加,第二个参数添加true
到append()
,像这样:
gmstate.append(image, true);
来源:Documentation for append()
嗨,如何增加对 '真'水平追加? – Hammer
我不是GraphicsMagick的专家,但为你找到了一些东西:http://aheckmann.github.io/gm/docs.html#append说:'ltr'(可选):** true从左到右* *, 一世。即使用'gmstate.append(images [i],true)'。请告诉我这是否有效,然后我会更新答案。 – nalply
谢谢。这就像一个魅力。 – Hammer