ImageMagick 拼接与合并图片
用 ImageMagick 把图片纵向或横向拼接、用 montage 做网格联系表、做前后对比图。含间距和标签设置。
纵向或横向拼接
magick shot1.png shot2.png shot3.png -append output.png # 纵向
magick before.jpg after.jpg +append comparison.jpg # 横向
减号/加号这个约定贯穿整个 ImageMagick:-append 是纵向堆叠,+append 是横向并排。一般来说减号打开某个设置,加号关掉它或选另一种行为。
尺寸不一致时
宽度不同的图会用背景色补齐到最宽的那张,不是缩放。想拼得整齐,先统一尺寸:
magick shot1.png shot2.png -resize 800x -background white \
-gravity center -append output.png
加间距
magick before.jpg after.jpg -background white -splice 20x0 \
+append -chop 20x0 comparison.jpg
-splice 在每张图前面插入一条背景带,末尾的 -chop 把最前面那条去掉,这样间隙只出现在两图之间。
用 montage 做联系表
montage *.jpg -tile 4x -geometry 300x300+8+8 \
-background white -label '%f' sheet.jpg
montage 是独立于 magick 的另一个程序。ImageMagick 7 上写作 magick montage,IM6 上直接是 montage。
-tile 4x—— 四列,行数按需要自动铺。写-tile 4x3则每张表最多 12 个。-geometry 300x300+8+8—— 单元格尺寸加横纵留白。-label '%f'—— 在每张缩略图下面打印文件名。其他有用的占位符:%wx%h是尺寸,%b是文件体积。
带标题的联系表
montage *.jpg -tile 5x -geometry 240x240+6+6 -background '#111820' \
-fill white -label '%f' -title '拍摄 — 2026 年 3 月' sheet.png
带分隔线的前后对比
magick before.jpg after.jpg -resize x800 \
-background '#0d9488' -splice 4x0 +append -chop 4x0 out.jpg
把一张图叠在另一张上
如果是叠放而不是拼接,用 -composite —— 详见水印那一页:
magick background.jpg overlay.png -gravity center -composite out.jpg
做雪碧图
montage icon-*.png -tile 10x -geometry 64x64+0+0 \
-background none sprite.png
零留白加透明背景,这样 CSS 的 background-position 坐标是可预测的。