我有大量图像存储在单独的服务器上,需要在单个页面上显示为某种类型的马赛克,其中可以动态显示或隐藏各个元素。
这些图像应该被提取,调整大小,然后作为精灵拼接在一起,并用作div上的背景图像。此时获取和调整大小是一个非问题,因为最大的障碍是理解追加方法,或者更确切地说如何将图像添加到集合中,以便使用所述方法。
根据文件:
gm("img.png").append(ltr)
应:
Append a set of images
如何将多张图片放入“套装”?
答案 0 :(得分:4)
假设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!');
});
这个想法是:
gmstate
write()
完成了真正的工作,这是异步的。这相当于gm('first').append('second').append('third')....append('last')
。
也许可以从空状态开始:var gmstate = gm();
。
我必须承认,如果你在文件中有一个列表,那么LeeNX答案中的@
文件列表会更容易,但是如果你没有......?
编辑:如果您需要水平附加图片,请向true
添加第二个参数append()
,如下所示:
gmstate.append(image, true);
答案 1 :(得分:0)
我能做的最好,如下......
var gm = require('gm')
gm('@images.txt')
.append()
.write('crazy.png', function (err) {
if (!err) console.log('crazytown has arrived');
})
其中images.txt是要追加的图像列表。
尚未弄清楚如何传递除图像列表文件以外的一组图像。
从网站上了解了这个想法 - http://www.graphicsmagick.org/GraphicsMagick.html
运行命令行实用程序时,可以在文件名前添加一个符号@来读取&gt;该文件中的图像文件名列表。如果你有太多的话,这很方便。图像文件名以适合命令行。
希望有所帮助 LEET