0

我有 200 张大小相同的 jpg。我需要将它们成对组合,并排放置。

所以

1.jpg
2.jpg
3.jpg
4.jpg

应该制作2个新的jpg,一个包含1和2,另一个包含3和4。并排。

将每张图片想象成一本书的一页。

无论如何使用 imageMagick 蒙太奇来自动化这个?

4

4 回答 4

0

我最终在 .NET 控制台应用程序中使用了ImageMagick NuGet 包并执行了以下操作:

using (MagickImageCollection images = new MagickImageCollection())
            {                   
                for (var i = 2; i <= 210; i=i+2)
                {
                    var first =
                        new MagickImage(string.Format("PATH-TO-IMAGE-FOLDER_{0}.jpg", i.ToString().PadLeft(3, '0')));

                    var second =
                        new MagickImage(string.Format("PATH-TO-IMAGE-FOLDER_{0}.jpg", (i+1).ToString().PadLeft(3, '0')));

                    images.Add(first);
                    images.Add(second);


                    using (MagickImage result = images.SmushHorizontal(0))
                    {
                        result.Write(string.Format("{0}.png", i));
                    }

                    images.Clear();
                }  
            }
于 2014-05-15T19:32:06.673 回答
0

您可以通过创建脚本快速自动执行此操作。

#!/bin/bash

for index in $(seq 1 2 200)
do
  left="$index.jpg"
  right="$((index + 1)).jpg"
  montage $left $right "page-$index.jpg"
done

seq实用程序将生成一个从 1 到 200(即1,3,5,7...199)相互跳过的数字列表。

于 2014-05-15T19:32:23.467 回答
0

这是一种解决方法,但经过数小时的研究,我确定这是最好的方法。


您需要创建一个仅包含要合并的图片的备份工作文件夹。此技术将删除所有以前的文件名。
然后按以下方式重命名所有文件 [1]:

打开文件资源管理器并导航到包含所有照片的文件夹
选择所有照片(使用'ctrl+a')
找到系列中的第一张照片并右键单击它,然后单击重命名 将
其命名为:Myphoto (101) 或 Myphoto (1001)
'space + (101)' 或 'space + (1001)' 很重要
按回车键并观察您的文件全部自动重命名

您的照片现在应该按升序命名
例如:[ Myphoto (1001) )、Myphoto (1002)、Myphoto (1003) 等]

您必须执行上述步骤,因为 Imagemagick 处理文件名的方式与 Windows 文件资源管理器呈现它们的方式不同

>Windows 将名称排序如下:1、2、3、4、5、6、7、8、9、10、11 等

>其中 Imagemagick 排序为:1、11、2、22、3、33、4、44 等

重命名并导航到包含所有照片的(备份)文件夹后,您可以运行命令,imagemagick 将发挥它的魔力!
魔术蒙太奇 -tile 2x1 -geometry +5+5 -border 5 *.png out@_%d.png

如果您不想要任何空白,可以删除边框和几何标签,
2x1可以更改为适合您需要的任何尺寸!(行 x 列)

以下是您可以使用的一些附加配置,而不是 2x1!

一乘二蒙太奇 - (1x2)
一乘三蒙太奇 - (1x3) 二乘
一蒙太奇 - (2x1) 二乘
二蒙太奇 - (2x2)
二乘三蒙太奇 - (2x3)
三乘一蒙太奇 - (3x1)
三乘两个蒙太奇 - (3x2)
三乘三蒙太奇 - (3x3)



非常感谢此线程中的 [@fmw42] 为我指明了正确的方向!

https://answers.microsoft.com/en-us/windows/forum/windows_xp-files/renaming-multiple-files-starting-with-001-not-1/26520ab1-823f-45b4-9661-65f17c25d4b9 [1]

于 2021-02-19T00:16:22.480 回答
0

在 ImageMagick 蒙太奇中,如果您使用前导零重命名图像,以便它们按字母顺序排列并将它们放入一个目录并 cd 到该目录,那么您可以这样做

montage *.jpg -tile 2x -background white -geometry +2+2 result.jpg

-tile 2x 将它们成对地依次水平放置 1_2、3_4 等,背景颜色有 2 个像素的间隙。您可以根据需要调整间距。如果您想使用 -label "%f" 作为文件名,您可以添加标签。见http://www.imagemagick.org/Usage/montage/

于 2017-07-10T16:40:01.403 回答