我有大量图像存储在单独的服务器上,需要在单个页面上显示为某种马赛克,其中可以动态显示或隐藏各个元素。
这些图像应该被获取,调整大小,然后作为精灵拼接在一起,并用作 div 上的背景图像。在这一点上,获取和调整大小不是问题,因为最大的障碍是理解 append 方法,或者更确切地说,如何将图像添加到集合中,以便使用所述方法。
根据文档:
gm("img.png").append(ltr)
应该:
Append a set of images
如何将多个图像放入“集合”?
我有大量图像存储在单独的服务器上,需要在单个页面上显示为某种马赛克,其中可以动态显示或隐藏各个元素。
这些图像应该被获取,调整大小,然后作为精灵拼接在一起,并用作 div 上的背景图像。在这一点上,获取和调整大小不是问题,因为最大的障碍是理解 append 方法,或者更确切地说,如何将图像添加到集合中,以便使用所述方法。
根据文档:
gm("img.png").append(ltr)
应该:
Append a set of images
如何将多个图像放入“集合”?
假设是这样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);
资料来源:文档append()
我能做的最好的事情如下......
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
运行命令行实用程序时,您可以在文件名前添加 at 符号 @ 以从该文件中读取 > 图像文件名列表。如果您有太多 > 图像文件名以适应命令行,这很方便。
希望对李特有所帮助