获取图像和简单拼接的自动化

时间:2015-02-08 00:40:12

标签: image-processing automation applescript

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

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

第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

这些网址始终相同。现在在文件夹本身内容的图像分为131 256x256 .jpg' s。这些文件也是高度规则的,并根据网格图案命名为[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
    
  2. 但我无法弄清楚如何创建一个脚本,根据原始文件夹将图像存入文件夹。例如,我可以

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

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

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

2 个答案:

答案 0 :(得分:0)

关于您的#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来自动完成所有这些。

答案 1 :(得分:0)

我会使用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