python垂直拼接多张图片

2024-08-19 20:25:04 浏览数 (3)

经常传资料需要拼接图片,拼接还会有各种问题,利用python生成一个简单脚本,垂直方向拼接文件目录下的多张图片

#注意事项,代码有问题,拼接最后一张如果显示不全,文件目录多放几张空白图片“垫高”

代码语言:txt复制
from PIL import Image
import os

#注意事项,代码有问题,拼接最后一张如果显示不全,文件目录多放几张空白图片“垫高”
# 设置图片目录路径
image_folder = 'D:\临时\D\长拼图\'  # 替换为你的图片文件夹路径
# 设置输出图片的路径
output_image_path = 'output_vertical_image.jpg'

# 获取目录下所有的JPG文件,确保排序
image_files = sorted([f for f in os.listdir(image_folder) if f.endswith('.jpg')])
image_paths = [os.path.join(image_folder, f) for f in image_files]

# 初始化最大宽度和总高度
max_width = 0
total_height = 0

# 计算所有图片的最大宽度和总高度
for img_path in image_paths:
    with Image.open(img_path) as img:
        max_width = max(max_width, img.width)
        total_height  = img.height

# 创建一个新的空白图片,用来拼接所有图片
new_image = Image.new('RGB', (max_width, total_height))

# 拼接图片
y_offset = 0
for img_path in image_paths:
    with Image.open(img_path) as img:
        # 调整图片大小以匹配最大宽度,保持原始宽高比
        if img.width < max_width:
            img = img.resize((max_width, int(img.height * (max_width / img.width))), Image.Resampling.LANCZOS)
        
        # 粘贴图片
        new_image.paste(img, (0, y_offset))
        y_offset  = img.height

# 保存拼接后的图片
new_image.save(output_image_path)
print(f'拼接完成,图片保存在:{output_image_path}')

0 人点赞