横向合并图片(并排)

155

我有五张图片,分别为:600x30、600x30、600x30、600x30、810x30。它们的名称分别为:0.png、1.png、2.png、3.png、4.png。

如何使用ImageMagick水平合并它们以创建一个尺寸为3210x30的图像?

6个回答

196

ImageMagick带有 montage 实用程序。Montage会将每个图像并排附加在一起,允许您调整每个图像之间的间距(-geometry),以及总体布局(-tile)。

montage [0-4].png -tile 5x1 -geometry +0+0 out.png

Montage Usage页面上可以找到其他示例。


1
Montage文档指定[0-5]语法是针对Linux的,所以我猜如果你在Windows上,你必须手动输入/生成所有文件名。例如:montage 0.png 1.png 2.png 3.png 4.png ... - Dan
1
@RodrigoGraça 请参考使用和示例指南,了解处理透明度和背景的方法。 - emcconville
6
[0-5].png会生成六个不同的文件,分别是"0.png, 1.png, 2.png, 3.png, 4.png, 5.png",但如果您使用了 tile 5x1 命令,它只会选取其中五个文件,因此最终输出只剩下两个文件。为避免这种情况,请改用 [0-4].png-tile 6x1 命令。请注意,修改后不要改变原来的意思。 - R. Barrett
1
跟随您的指导,这个命令完美地将两个JPEG图像并排合并:montage left.jpg right.jpg -tile 2x1 -geometry +0+0 out.jpg - Gabriel Staples
1
你可能想要添加“-background none”以保留透明度。 - Liran Funaro
显示剩余2条评论

132

ImageMagick有一个名为“convert”的命令行工具,可以水平合并图像或用于其他目的。我尝试过该命令,并在您的案例中完美地工作:
要水平合并图像:
convert +append *.png out.png

要垂直堆叠图像:
convert -append *.png out.png


1
可以将以下内容作为Thunar自定义操作添加,例如垂直拼接:convert -append %F joined-image.png。所有已选择的图像将按照字母顺序合并为一个png文件。 - user4098390
3
如果使用ImageMagick 7+,则需要在参数之前放置要处理的图像:convert *.png +append out.png - Mazuhl
1
将四张图片 a.png、b.png、c.png 和 d.png 组合成一个 2x2 的网格: convert a.png b.png +append row1.png; convert c.png d.png +append row2.png; convert row1.png row2.png -append grid.png - deadfish

23

如果图像的宽度/高度不相同,请使用-resize

您可以使用-resize选项为所有图像设置相同的高度,例如,在水平拼接两个图像时将高度固定为500像素:

convert +append image_1.png image_2.png -resize x500 new_image_conbined.png

或者对于垂直拼接,您需要设置固定宽度:

convert -append image_1.png image_2.png -resize 500x new_image_conbined.png

例子:

image_1.png 1067x600

enter image description here

image_2.png 1920x1080

enter image description here

new_image_conbined.png 889x500

enter image description here

相关:

GIMP交互式操作方法

如果您需要交互式地剪切/调整图像大小,那么GIMP是完美的工具,这里有一个详细的逐步说明:GIMP如何将两个图像并排组合

enter image description here

SVGs

ImageMagick 6.9.11-60无法处理它们,因此请参见:


2
这个应该是最佳答案。montage 太过复杂了。 - Weihang Jian
如果我想要自动将较大的图像调整为较小图像的尺寸,该怎么办?(这样我就不必明确传递其高度) - undefined

12

使用ImageMagick非常简单(brew install imagemagick)。

convert +append image_1.png image_2.png new_image_conbined.png

4
好的,复制现有答案可以获得10个投票。 - Quasímodo
当我运行这个程序时,不知何故,我的其中一张图片会被旋转。例如,假设我想把V叠在E的上面。但实际上得到的结果是:^ E(我使用了“-append”选项) - Raleigh L.

1

使用 MiniMagick Rails gem 的任何人都可以使用内置工具合并图像:

# Replace this with the path to the images you want to combine
images = [
  "image1.jpg",
  "image2.jpg"
]

processed_image = MiniMagick::Tool::Montage.new do |image|
  image.geometry "x700+0+0"
  image.tile "#{images.size}x1"
  images.each {|i| image << i}
  image << "output.jpg"
end

查看文档以获取处理调整大小和位置的#geometry选项。当前示例将调整图像大小为700px高度,同时保持图像的纵横比。 +0+0将使图像之间没有间隙。


1

其他答案中描述的convert +append方法可以将图像水平拼接,顶部对齐。如果您想要底部或中心对齐,请尝试:

convert input1.png input2.png -gravity South +append output.png
  or
convert input1.png input2.png -gravity Center +append output.png

来源:Fred的ImageMagick小贴士http://www.fmwconcepts.com/imagemagick/tidbits/image.php#append


不错!当然要使用“-gravity North”来将其对齐到顶部。 - Jerry101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接