可通过ImageMagick的montage或convert、sips链式处理、Python Pillow脚本、预览转PDF再抽帧、快捷指令封装及shell+awk动态生成命令等七种终端方案,实现Mac多张截图无缝纵向/横向拼接。
如果您已通过Mac截取多张局部截图,但需要将它们纵向或横向无缝拼接为一张长图,且希望借助终端命令实现自动化、无损合并,则可采用以下多种技术路径。以下是解决此问题的步骤:
一、使用ImageMagick的montage命令垂直拼接
该方法依赖开源图像处理工具ImageMagick,通过montage命令按指定顺序将图片堆叠为单张长图,支持统一缩放、间距控制与背景填充。
1、在终端中执行brew install imagemagick安装ImageMagick(如未安装Homebrew,请先运行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")。
2、确保所有待拼接截图按期望顺序命名,例如screenshot_01.png、screenshot_02.png、screenshot_03.png,并置于同一文件夹内。
3、进入该文件夹后,在终端中输入以下命令进行垂直拼接:montage -mode concatenate -tile 1x *.png -background none -gravity center output_long.png。
4、检查生成的output_long.png,确认图片上下对齐无错位、无多余边距。
二、使用ImageMagick的convert命令手动叠加合成
当需精确控制每张图的Y轴偏移量(例如应对截图间存在重复区域或需微调对齐),convert配合-composite可实现像素级定位粘贴。
1、先获取首张图高度:identify -format "%h" screenshot_01.png,记下返回值(如1200)。
2、创建空白画布,高度为所有图高度之和(假设共3张,每张1200px,无重叠):convert -size 800x3600 xc:none canvas.png(其中800为截图宽度,需根据实际替换)。
3、依次将各图复合到画布指定位置:convert canvas.png screenshot_01.png -geometry +0+0 -composite temp1.png。
4、继续叠加第二张:convert temp1.png screenshot_02.png -geometry +0+1200 -composite temp2.png(+1200表示从Y=1200处开始贴入)。
5、叠加第三张:convert temp2.png screenshot_03.png -geometry +0+2400 -composite output_long.png。
三、使用sips命令链式裁剪+拼接(仅限同尺寸图)
macOS原生sips工具虽不直接支持拼接,但可通过生成带透明扩展区域的中间图,再结合cat与pngpaste等辅助完成基础纵向拼合。
1、为每张图添加底部透明扩展区(除最后一张):sips --padToHeightWidth 2400 800 screenshot_01.png --out padded_01.png(2400为目标总高,800为宽)。
2、使用pngpaste(需brew install pngpaste)将第一张图复制进剪贴板:pngpaste /tmp/clip1.png 。
3、将第二张图追加到底部:convert /tmp/clip1.png screenshot_02.png -append /tmp/clip2.png。
4、重复追加操作:convert /tmp/clip2.png screenshot_03.png -append output_long.png。
四、通过Python脚本调用Pillow库全自动拼接
若需稳定处理不同尺寸截图、自动识别重叠区域并消除接缝,Python脚本提供最大灵活性,且无需额外GUI软件。
1、在终端中安装Pillow:pip3 install pillow。
2、新建文本文件stitch.py,写入如下内容(以垂直拼接为例):