【问题标题】:Automation for Fetching Images and Simple Stitching获取图像和简单拼接的自动化
【发布时间】:2015-04-07 23:32:17
【问题描述】:

对于非常具体的情况,我深表歉意,我不知道解决方案对其他人有多大帮助。我正在寻找用于图像获取和拼接任务的自动化解决方案。我有来自网络源的图像,这些图像存储在定期递增的文件夹中,并且具有可预测的文件名。我想下载这些文件,根据它们的原始文件夹将它们存放在文件夹中,最后将每个文件夹中的文件拼接成一个简单的网格。

以下是这两个步骤的具体内容。

第 1 步

图像以这种格式存储在定期递增的命名文件夹中。

http://website.url/XX_[1-339][v/r]/XX/images.jpg

所以数字将从 001 增加到 339,每个数字都有一个 'r' 和 'v' 版本,例如。

//XX_256r/XX/images.jpg or //XX_075v/XX/images.jpg

这些 URL 在其他方面总是相同的。现在在文件夹本身中,内容是分成 131 256x256 .jpg 的图像。这些文件也是高度规则的,并根据网格模式命名,如 [0-9]_[0-12].jpg,其中第一张图片为 0_0.jpg,最后一张为 9_12.jpg。

通过使用一个简单的applescript,我已经能够毫无困难地逐个文件夹下载这些文件。但是,执行此操作约 600 次仍然有点麻烦。下一步是我什至无法找到一次性自动化解决方案的部分。

第 2 步

图像存在于它们自己的文件夹中,并且图像本身是一个较大的图像,分成 256x256 像素的部分。我接下来要做的就是简单地将这些图像组合成一个网格。图像以其在网格中的位置命名,因此 0_0.jpg 从左上角开始,而 1_0.jpg 是下一个位置。网格宽 9 格,高 12 格,因此第一行图像将从 0_0.jpg 增加到 9_0.jpg,最后一行将从 0_12.jpg 增加到 9_12.jpg。我想将这些图像自动拼接成一个图像,以便可以批量应用到整个集合。

这是我的目标。为此,我有 X 个问题:

  1. 如果我运行的是 OS X,我可以在 Automator 中使用脚本执行第一步吗?我能够用一个简单的方法获取一个文件夹

    curl -O http://website.url/.../XX/[0-9]_[0-12].jpg
    

但我不知道如何创建一个脚本,该脚本将根据原始文件夹将图像存入文件夹。所以例如我可以

curl -O http://website.url/XX_[001-339]v/XX/[0-9]_[0-12].jpg

使用 v 后缀运行一次,使用 r 运行一次以获取每个图像,但是这会将数百个相同名称的文件放在同一个文件夹中。我不确定如何划分它们。

  1. 一旦我将所有图像放在各自命名的文件夹中,如何将它们拼接在一起?由于不需要进行图像处理或修改,因此通过某种脚本编写这似乎应该是一项可行的任务,但作为一个新手,我不知道从哪里开始。必须将 131 张图像组合成 JPG,并且此过程需要重复 680 次,因此需要自动化。

任何关于从哪里开始的建议将不胜感激,我意识到这是一个非常具体的问题。

【问题讨论】:

    标签: image-processing automation applescript


    【解决方案1】:

    关于您的第一个问题,curl 的手册页有一个“-o”选项,因此您可以指定保存文件的位置。如果您阅读了该内容(如下所示),您会发现它可以在使用“#”获取多个文档同时使用“--create-dirs”选项时工作。

       -o, --output <file>
              Write output to <file> instead of stdout. If you are using {} or
              [] to fetch multiple documents, you can use '#'  followed  by  a
              number  in  the <file> specifier. That variable will be replaced
              with the current string for the URL being fetched. Like in:
    
                curl http://{one,two}.site.com -o "file_#1.txt"
    
              or use several variables like:
    
                curl http://{site,host}.host[1-5].com -o "#1_#2"
    
              You may use this option as many times as the number of URLs  you
              have.
    
              See  also  the --create-dirs option to create the local directo-
              ries dynamically. Specifying the output as '-' (a  single  dash)
              will force the output to be done to stdout.
    

    关于问题 #2,请参阅this link。请参阅“Jonik”的答案,其中他提到了 ImageMagick 的蒙太奇命令的使用。

    我相信您已经知道,您可以使用 applescript 中的“do shell script”命令来运行 curl 和 montage 命令,并创建一个 applescript 来自动执行所有这些操作。

    【讨论】:

      【解决方案2】:

      我会使用 shell 脚本和 ImageMagick 来制作 curl 和图像蒙太奇,而无需使用 Applescript。

      如果您不知道或没有 ImageMagick,我建议您使用 homebrew 安装它,如下所示:

      brew install imagemagick     
      

      您只需要知道+append 将无间隙地并排添加输入图像,而-append 将在彼此下方无间隙地添加图像。

      #!/bin/bash
      for r in {0..12}; do
        convert {0..9}_$r.jpg +append row$r.jpg
      done
      convert row{0..12}.jpg -append whole.jpg
      

      因此,如果您将上述内容保存在登录目录 ($HOME) 中名为 rebuild 的脚本中,并使其可执行

      chmod +x $HOME/rebuild
      

      然后你需要做的就是进入一个文件夹并输入

      $HOME/rebuild
      

      脚本将执行的命令看起来像这样完全展开:

      convert 0_0.jpg 1_0.jpg 2_0.jpg 3_0.jpg 4_0.jpg 5_0.jpg 6_0.jpg 7_0.jpg 8_0.jpg 9_0.jpg +append row0.jpg
      convert 0_1.jpg 1_1.jpg 2_1.jpg 3_1.jpg 4_1.jpg 5_1.jpg 6_1.jpg 7_1.jpg 8_1.jpg 9_1.jpg +append row1.jpg
      convert 0_2.jpg 1_2.jpg 2_2.jpg 3_2.jpg 4_2.jpg 5_2.jpg 6_2.jpg 7_2.jpg 8_2.jpg 9_2.jpg +append row2.jpg
      convert 0_3.jpg 1_3.jpg 2_3.jpg 3_3.jpg 4_3.jpg 5_3.jpg 6_3.jpg 7_3.jpg 8_3.jpg 9_3.jpg +append row3.jpg
      convert 0_4.jpg 1_4.jpg 2_4.jpg 3_4.jpg 4_4.jpg 5_4.jpg 6_4.jpg 7_4.jpg 8_4.jpg 9_4.jpg +append row4.jpg
      convert 0_5.jpg 1_5.jpg 2_5.jpg 3_5.jpg 4_5.jpg 5_5.jpg 6_5.jpg 7_5.jpg 8_5.jpg 9_5.jpg +append row5.jpg
      convert 0_6.jpg 1_6.jpg 2_6.jpg 3_6.jpg 4_6.jpg 5_6.jpg 6_6.jpg 7_6.jpg 8_6.jpg 9_6.jpg +append row6.jpg
      convert 0_7.jpg 1_7.jpg 2_7.jpg 3_7.jpg 4_7.jpg 5_7.jpg 6_7.jpg 7_7.jpg 8_7.jpg 9_7.jpg +append row7.jpg
      convert 0_8.jpg 1_8.jpg 2_8.jpg 3_8.jpg 4_8.jpg 5_8.jpg 6_8.jpg 7_8.jpg 8_8.jpg 9_8.jpg +append row8.jpg
      convert 0_9.jpg 1_9.jpg 2_9.jpg 3_9.jpg 4_9.jpg 5_9.jpg 6_9.jpg 7_9.jpg 8_9.jpg 9_9.jpg +append row9.jpg
      convert 0_10.jpg 1_10.jpg 2_10.jpg 3_10.jpg 4_10.jpg 5_10.jpg 6_10.jpg 7_10.jpg 8_10.jpg 9_10.jpg +append row10.jpg
      convert 0_11.jpg 1_11.jpg 2_11.jpg 3_11.jpg 4_11.jpg 5_11.jpg 6_11.jpg 7_11.jpg 8_11.jpg 9_11.jpg +append row11.jpg
      convert 0_12.jpg 1_12.jpg 2_12.jpg 3_12.jpg 4_12.jpg 5_12.jpg 6_12.jpg 7_12.jpg 8_12.jpg 9_12.jpg +append row12.jpg
      convert row0.jpg row1.jpg row2.jpg row3.jpg row4.jpg row5.jpg row6.jpg row7.jpg row8.jpg row9.jpg row10.jpg row11.jpg row12.jpg -append whole.jpg
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 2017-08-24
        相关资源
        最近更新 更多