【问题标题】:Stitching images with append() in graphicsmagick在 graphicsmagick 中使用 append() 拼接图像
【发布时间】:2012-09-04 21:54:56
【问题描述】:

我有大量图像存储在单独的服务器上,需要在单个页面上显示为某种马赛克,其中可以动态显示或隐藏各个元素。

这些图像应该被获取,调整大小,然后作为精灵拼接在一起,并用作 div 上的背景图像。在这一点上,获取和调整大小不是问题,因为最大的障碍是理解 append 方法,或者更确切地说,如何将图像添加到集合中,以便使用所述方法。

根据文档:

gm("img.png").append(ltr)

应该:

Append a set of images

如何将多个图像放入“集合”中?

【问题讨论】:

    标签: javascript node.js css-sprites graphicsmagick


    【解决方案1】:

    假设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!');
    });
    

    想法是:

    1. 从 graphicsmagick 状态变量 gmstate 开始
    2. 在循环中同步追加。
    3. write() 做真正的工作,这是异步的。

    这相当于gm('first').append('second').append('third')....append('last')

    也许可以从空状态开始:var gmstate = gm();

    我不得不承认,如果您在文件中有一个列表,LeeNX 的答案中的@ filelist hack 会容易得多,但如果您没有...?

    编辑:如果您需要水平附加图像,请将第二个参数true 添加到append(),如下所示:

    gmstate.append(image, true);
    

    来源:Documentation for append()

    【讨论】:

    • 你好,如何添加 para 'true' 水平附加?
    • 我不是 GraphicsMagick 专家,但为您找到了一些东西:aheckmann.github.io/gm/docs.html#append 说:ltr(可选):从左到右为真,我。 e.使用gmstate.append(images[i], true)。请告诉我这是否有效,然后我会更新答案。
    【解决方案2】:

    我能做的最好的事情如下......

    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

    运行命令行实用程序时,您可以在文件名前添加 @ 符号以从该文件中读取 > 图像文件名列表。如果您有太多 > 图像文件名以适应命令行,这很方便。

    希望有所帮助 李特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-30
      • 2011-12-26
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 2013-03-07
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多