鄂缮输 发表于 2026-3-12 18:30:04

手把手教你用 Python 批量拼接图片(无需ps,适用快速修改拼接)附已打包好软件链接

**背景介绍**
日常工作或学习中,我们经常会遇到这样的问题:

[*]有一堆图片(比如实验截图、作品图、论文附图)
[*]想按固定排版拼接成一张大图
[*]要求清晰度不能降低
[*]还要自动分组,批量生成多张拼图
如果手动用 PS 一张张拖拽,不仅累,还容易出错。
今天这段 Python 代码可以帮你:
✅ 自动读取文件夹内所有图片
✅ 按 2×5 排列(可自定义)
✅ 自动按数字顺序排序(1.jpg → 2.jpg → 10.jpg 不会乱序)
✅ 自动保持原始分辨率
✅ 批量生成拼图
运行后,你会在原文件夹里看到:
collage_final.jpg
如果图片超过 9 张,会自动生成:
collage_final_1.jpg collage_final_2.jpg
代码功能说明
这段代码的核心作用只有一句话:
把一个文件夹里的图片,按 3 行 × 3 列排好,拼成一张高清大图。
它的工作流程可以理解为:

[*]找到所有图片
[*]排序
[*]创建一张大白画布
[*]把图片一张张“贴”上去
[*]保存为高清文件
适合:

[*]论文图片拼接
[*]实验截图汇总
[*]产品展示图制作
[*]批量图片整理
运行环境准备

[*] 安装 Python
要求:
Python 3.8 及以上版本
如果没有安装,去官网下载并安装:
https://www.python.org/downloads/
安装时务必勾选:
Add Python to PATH
[*] 安装依赖库
-这段代码只用到一个库:Pillow
pip install pillow
详细运行步骤

[*] 准备图片文件夹
比如你有一个文件夹:D:\image_test
里面放:
1.jpg2.jpg3.jpg...9.jpg

[*] 新建 Python 文件
在任意位置新建:collage.py
把下面的完整代码复制进去:
点击查看代码import refrom PIL import Imageimport os# ==================== 手动配置区 ====================TARGET_PATH = r'D:\【your_folder】' IMAGES_PER_GROUP = 9         ROWS = 3                     COLS = 3       BOTTOM_PADDING = 20# ===================================================def natural_sort_key(s):    """自然排序:确保 1.jpg, 2.jpg, 10.jpg 按数字顺序排列"""    return +)', s)]def create_collage(folder_path):    if not os.path.exists(folder_path):      print("路径不存在,请检查 TARGET_PATH。")      return    valid_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.webp', '.tiff')    raw_files = [      f for f in os.listdir(folder_path)         if f.lower().endswith(valid_extensions)    ]      raw_files =     image_files = sorted(      ,      key=lambda x: natural_sort_key(os.path.basename(x))    )      if not image_files:      print("未找到图片,请检查路径。")      return    with Image.open(image_files) as first_img:      img_width, img_height = first_img.size      input_extension = os.path.splitext(image_files)      img_mode = first_img.mode      img_dpi = first_img.info.get('dpi')         print(f"单图尺寸: {img_width} x {img_height}")    canvas_width = COLS * img_width    canvas_height = (ROWS * img_height) + BOTTOM_PADDING      groups = [      image_files      for i in range(0, len(image_files), IMAGES_PER_GROUP)    ]      for group_num, group_images in enumerate(groups):      canvas = Image.new(img_mode, (canvas_width, canvas_height), color='white')                for idx, img_path in enumerate(group_images):            try:                with Image.open(img_path) as img:                  if img.size != (img_width, img_height):                        img = img.resize((img_width, img_height), Image.Resampling.LANCZOS)                                        if img.mode != img_mode:                        img = img.convert(img_mode)                                          row_idx = idx // COLS                  col_idx = idx % COLS                  x = col_idx * img_width                  y = row_idx * img_height                                        canvas.paste(img, (x, y))                            except Exception as e:                print(f"处理出错: {img_path}, 原因: {e}")                suffix = f"_{group_num + 1}" if len(groups) > 1 else ""      save_filename = f"collage_final{suffix}{input_extension}"      save_path = os.path.join(folder_path, save_filename)                save_params = {}      if input_extension.lower() in ['.jpg', '.jpeg']:            save_params['quality'] = 100            save_params['subsampling'] = 0                if img_dpi:            save_params['dpi'] = img_dpi                  canvas.save(save_path, **save_params)      print(f"成功生成: {save_filename}")if __name__ == "__main__":    create_collage(TARGET_PATH)

[*] 修改路径
找到:TARGET_PATH = r'D:\【your_folder】'
[*] 其他参数:
IMAGES_PER_GROUP为照片总数
ROWS为行数
COLS为列数
BOTTOM_PADDING 为底部留白的像素
[*] 运行代码查看结果
打开图片文件夹,你会看到拼好的大图。
特点:


[*]预设可以X行Y列排列
[*]顺序正确
[*]底部多 Zpx 留白
现成软件下载链接:https://feishu.doubao.com/drive/file/GqctbI6aAo7PKVxosmCcgz4wn4e
总结
这段脚本做的事情非常简单:

[*]读取图片
[*]排序
[*]建立大画布
[*]按 X×Y 粘贴
[*]高清保存

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 手把手教你用 Python 批量拼接图片(无需ps,适用快速修改拼接)附已打包好软件链接