并排合并图像(水平)
Posted
技术标签:
【中文标题】并排合并图像(水平)【英文标题】:Merge Images Side by Side (Horizontally) 【发布时间】:2014-01-11 06:56:59 【问题描述】:我有五张尺寸的图片:600x30、600x30、600x30、600x30、810x30。它们的名字分别是:0.png、1.png、2.png、3.png、4.png。
如何使用 ImageMagick 水平合并它们以制作 3210x30 大小的图像?
【问题讨论】:
【参考方案1】:ImageMagick 附带 montage
实用程序。蒙太奇将并排附加每张图片,让您可以调整每张图片之间的间距 (-geometry
) 和总体布局 (-tile
)。
montage [0-4].png -tile 5x1 -geometry +0+0 out.png
其他示例可以在Montage Usage页面上找到
【讨论】:
montage 文档指定 [0-5] 语法适用于 linux,所以我猜如果您在 Windows 上,您必须键入/生成所有文件名。即蒙太奇 0.png 1.png 2.png 3.png 4.png ... @RodrigoGraça 请参阅Usage & Examples 指南,了解如何处理透明度和背景。 它也适用于 jpg 和 png 的组合。谢谢[0-5].png
将产生“0.png, 1.png, 2.png, 3.png, 4.png, 5.png”,六个不同的文件,但您的 tile 5x1
只会取其中五个,留下两个输出文件。这应该使用[0-4].png
或-tile 6x1
。
感谢支架提示!多年来一直使用 linux,只发现0..4
。有关文档,请参阅 glob manual 的“范围”部分。【参考方案2】:
ImageMagick 具有名为“convert”的命令行工具,用于水平合并图像或用于其他目的。我已经尝试过这个命令并在你的情况下完美地工作:
横向拼接图片:convert +append *.png out.png
垂直堆叠图像:convert -append *.png out.png
【讨论】:
可以以这种形式添加到 Thunar 自定义操作(例如,垂直加入 = up-town):convert -append %F joined-image.png
。所有选定的图像将按字母顺序合并为一个 png
如果使用 ImageMagick 7+,您需要将您正在处理的图像放在参数之前:convert *.png +append out.png
制作一个 2x2 的网格(a.png, b.png, c.png, d.png):convert a.png b.png +append row1.png; convert c.png d.png +append row2.png; convert row1.png row2.png -append grid.png
【参考方案3】:
如果图片的宽度/高度不同,请使用-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
image_2.png 1920x1080
new_image_conbined.png 889x500
相关:
https://askubuntu.com/questions/226054/how-do-i-join-two-images-together https://superuser.com/questions/290656/combine-multiple-images-using-imagemagick如何使用 GIMP 进行交互
如果您需要首先以交互方式裁剪/调整图像大小(通常是这种情况),那么 GIMP 是完美的工具,这里有详细的分步说明:https://graphicdesign.stackexchange.com/questions/83446/gimp-how-to-combine-two-images-side-by-side/145543#145543
SVG
ImageMagick 6.9.11-60 不处理它们,请参阅:
How to concatenate SVG files lengthwise from linux command line? https://graphicdesign.stackexchange.com/questions/137096/is-there-a-way-to-stack-two-svgs-on-top-of-each-other https://graphicdesign.stackexchange.com/questions/90844/joining-together-multiple-svg-images【讨论】:
【参考方案4】:ImageMagick 非常简单 (brew install imagemagick
)
convert +append image_1.png image_2.png new_image_conbined.png
【讨论】:
很好...复制现有答案,获得 +10 票。【参考方案5】:任何使用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.sizex1"
images.each |i| image << i
image << "output.jpg"
end
查看documentation 中的#geometry
选项以处理调整大小和放置。当前示例将图像大小调整为700px
高度,同时保持图像的纵横比。 +0+0
将放置图像,它们之间没有间隙。
【讨论】:
以上是关于并排合并图像(水平)的主要内容,如果未能解决你的问题,请参考以下文章