手把手教你用 Python 批量拼接图片(无需ps,适用快速修改拼接)附已打包好软件链接
今天这段 Python 代码可以帮你:
✅ 自动读取文件夹内所有图片
✅ 按 2×5 排列(可自定义)
✅ 自动按数字顺序排序(1.jpg → 2.jpg → 10.jpg 不会乱序)
✅ 自动保持原始分辨率
✅ 批量生成拼图
运行后,你会在原文件夹里看到:collage_final.jpg
如果图片超过 9 张,会自动生成:collage_final_1.jpg collage_final_2.jpg
代码功能说明
这段代码的核心作用只有一句话:
把一个文件夹里的图片,按 3 行 × 3 列排好,拼成一张高清大图。
它的工作流程可以理解为:
- 找到所有图片
- 排序
- 创建一张大白画布
- 把图片一张张“贴”上去
- 保存为高清文件
适合:
- 论文图片拼接
- 实验截图汇总
- 产品展示图制作
- 批量图片整理
运行环境准备
-
[1] 安装 Python
要求:
Python 3.8 及以上版本
如果没有安装,去官网下载并安装:
https://www.python.org/downloads/
安装时务必勾选:Add Python to PATH -
[2] 安装依赖库
-这段代码只用到一个库:Pillowpip install pillow
详细运行步骤
- [1] 准备图片文件夹
比如你有一个文件夹:D:\image_test
里面放:
1.jpg
2.jpg
3.jpg
...
9.jpg
- [2] 新建 Python 文件
在任意位置新建:collage.py
把下面的完整代码复制进去:
点击查看代码
import re
from PIL import Image
import 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 [int(text) if text.isdigit() else text.lower()
for text in re.split('([0-9]+)', 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 = [f for f in raw_files if "collage_final" not in f]
image_files = sorted(
[os.path.join(folder_path, f) for f in raw_files],
key=lambda x: natural_sort_key(os.path.basename(x))
)
if not image_files:
print("未找到图片,请检查路径。")
return
with Image.open(image_files[0]) as first_img:
img_width, img_height = first_img.size
input_extension = os.path.splitext(image_files[0])[1]
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[i:i + IMAGES_PER_GROUP]
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)
- [3] 修改路径
找到:TARGET_PATH = r'D:\【your_folder】' - [4] 其他参数:
IMAGES_PER_GROUP为照片总数ROWS为行数COLS为列数BOTTOM_PADDING为底部留白的像素 - [5] 运行代码查看结果
打开图片文件夹,你会看到拼好的大图。
特点:
- 预设可以X行Y列排列
- 顺序正确
- 底部多 Zpx 留白
现成软件下载链接:豆包
总结
这段脚本做的事情非常简单:
- 读取图片
- 排序
- 建立大画布
- 按 X×Y 粘贴
- 高清保存
分类: 地信遥感处理
免责声明:本内容来自平台创作者,博客园系信息发布平台,仅提供信息存储空间服务。
+加关注
0
0
» 下一篇: 手把手教你用 Python 实现批量文件夹 RAR 压缩
posted on 2026-02-15 17:20 Laurentianelle 阅读(205) 评论(0) 收藏 举报
登录后才能查看或发表评论,立即 登录 或者 逛逛 博客园首页
【推荐】 凌霞 618 年中大促,Halo 与 1Panel 产品全线半价,叠加满减!
【推荐】HarmonyOS 6.1.0 创新特性“悬浮页签+沉浸光感”精品文章专题
【推荐】科研领域的连接者艾思科蓝,一站式科研学术服务数字化平台
编辑推荐:
- [经验分享] 我的第一个 Skill
- 让 Agent 在对话中成长:自进化机制的五层实现
- 代码之外:一个技术人的职场困境与自我和解
- 贩卖焦虑的时代,我终于接住了真实的焦虑
- 工良吐槽篇:万字长文细说 AI 落地之笑谈
昵称: Laurentianelle
园龄: 5个月
粉丝: 4
关注: 0
+加关注
|
|||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
|---|---|---|---|---|---|---|---|---|---|
| 31 | 1 | 2 | 3 | 4 | 5 | 6 | |||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
| 28 | 29 | 30 | 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
搜索
常用链接
随笔分类
随笔档案
阅读排行榜
- 1. 无人机倾斜摄影内业全流程(363)
- 2. Transformer-GeoShapley 与 XGBoost-GeoShapley:原理、数据需求、分析流程与生态空间治理应用(314)
- 3. 生态系统服务研究中的四大模型:地理探测器、XGBoost-GeoShapley、Transformer-GeoShapley与PLUS模型的对比解析(313)
- 4. ArcPy 脚本:批量生成郑州市 1990-2019 年空间分析结果(核密度、热点、平均中心、标准差椭圆)(263)
- 5. Python批量图片拼接脚本:支持行列布局、最后一行居中、自然排序(258)
评论排行榜
推荐排行榜
博客园 © 2004-2026
编辑浙公网安备 33010602011771号 浙ICP备2021040463号-3
更多推荐


所有评论(0)