比方說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