功能简介
本脚本用于将指定路径下的多张图片纵向拼接成一张长图,并保存到指定的输出路径。用户可以选择输入图片文件和脚本文件是否在同一个文件夹,以及输出图片的保存路径。
工作流程
- 初始化:脚本首先初始化一个空的
Image
对象用于拼接图片。 - 加载图片:脚本加载所有指定路径下的图片,并获取它们的尺寸。
- 计算新图片尺寸:计算新图片的高度(所有图片高度之和)和宽度(最大宽度,保证图片不失真)。
- 创建新图片:创建一个新的空白图片,颜色为白色(RGB模式)。
- 拼接图片:遍历每张图片,将其粘贴到新图片上。
- 保存新图片:保存拼接后的新图片到指定的输出路径。
代码展示
# 纵向拼图
from PIL import Image
def zongxiang_splicing(images_path, output_path):
"""
将指定路径下的图片纵向拼接成一张长图并保存。
:param images_path: 图片路径列表,图片将按照列表顺序拼接
:param output_path: 输出长图的保存路径
"""
# 初始化一个空的Image对象用于拼接图片
image_widths, image_heights = [], []
images = []
# 加载所有图片并获取它们的尺寸
for img_path in images_path:
img = Image.open(img_path)
images.append(img)
image_widths.append(img.width)
image_heights.append(img.height)
# 计算新图片的宽度(最大宽度,保证图片不失其)和高度(所有图片高度之和)
max_width = max(image_widths)
total_height = sum(image_heights)
# 创建一个新的空白图片,颜色为白色(RGB模式)
new_image = Image.new('RGB', (max_width, total_height), color='white')
# 遍历每张图片,粘贴到新图片上
y_position = 0
for img in images:
new_image.paste(img, (0, y_position))
y_position += img.height
# 保存新图片
new_image.save(output_path)
print(f"长图已保存至{output_path}")
# 自定义部分!!!
#输入条件(任选一个,默认条件1)
# 条件1:输入图片文件和py文件在同一个文件夹
images_paths = ['屏幕截图(572).png', '屏幕截图(575).png', '屏幕截图(574).png']
# 条件2:输入图片文件和py文件不在同一个文件夹
# images_paths=[r'E:\Pycharm\pythonProject\PIL\屏幕截图(572).png',
# r'E:\Pycharm\pythonProject\PIL\屏幕截图(573).png',
# r'E:\Pycharm\pythonProject\PIL\屏幕截图(574).png']
#输出结果(默认结果1)
# 结果1:自定义文件名并将新图片和py文件保存在同一个文件夹下
output_image_path = '纵向.png'
# 结果2:自定义文件名并将新图片保存在指定文件夹下
# output_image_path =r'E:\Pycharm\pythonProject\PIL\02.png'
# 调用函,数勿动!
zongxiang_splicing(images_paths, output_image_path)
库文件及函数
- PIL库:
from PIL import Image
,用于处理图片。- Image.open():打开指定路径的图片文件。
- Image.new():创建一个新的空白图片。
- Image.paste():将一张图片粘贴到另一张图片上。
- Image.save():保存图片到指定路径。
函数功能
-
zongxiang_splicing(images_path, output_path):纵向拼接图片并保存。(自建)
images_path
:图片路径列表,图片将按照列表顺序拼接。output_path
:输出长图的保存路径。
运行注意事项
- 图片路径:确保输入的图片路径是正确的,并且图片文件存在。
- 输出路径:确保输出路径是可写的,并且输出文件名是唯一的,以避免覆盖已有文件。
- 图片格式:脚本默认处理的是RGB模式的图片,如果图片是其他格式(如RGBA),可能需要调整代码。
- 文件路径格式:在Windows系统中,路径分隔符使用反斜杠(
\
),而在Linux和macOS系统中,路径分隔符使用正斜杠(/
)。如果脚本需要在不同操作系统上运行,建议使用原始字符串(在字符串前加r
)或使用os.path.join()
来构建路径。