python批量拼接图片

该代码是一个Python脚本,用于将指定文件夹中的多张图片按垂直方向拼接成一张长图。

  1. PIL是一个用于图像处理的库,提供了许多功能来处理、编辑和转换图像。通过导入Image模块,你可以使用PIL库中的各种图像处理功能。
  2. os模块提供了许多与操作系统交互的功能,如文件和目录操作、进程管理等。通过导入这个模块,你可以使用它提供的各种功能来与操作系统进行交互。
  3. glob模块用于文件模式匹配,它可以搜索匹配特定模式的文件路径,并返回一个包含这些路径的列表。通过导入这个模块,你可以使用它来方便地搜索匹配特定模式的文件。

代码功能简介:

  • 功能:
    • 打开并读取指定路径的图片,将它们放入images列表中。
    • 获取第一张图片的宽度和高度。
    • 计算拼接后图片的总尺寸。如果方向是垂直的,则总宽度是单张图片的宽度,总高度是所有图片高度的总和。
    • 创建一个新的空白图片,尺寸与拼接后的图片相同,背景色为白色。
    • 按指定的方向(垂直)将图片拼接到新创建的空白图片上。

详细代码如图所示:

# -*- coding: utf-8 -*-
from PIL import Image
import os
import glob

def concatenate_images(image_path_list, direction):
    # 打开图片并放入images列表
    images = [Image.open(x) for x in image_path_list]
    # 获取单个图片尺寸
    width, height = images[0].size
    # 计算拼接后图片的总尺寸
    if direction == 'vertical':
        total_width = images[0].size[0]
        total_height = sum(i.size[1] for i in images)
        # 创建空白长图
        concat_image = Image.new('RGB', (total_width, total_height), 'white')
        # 拼接图片
        if direction == 'vertical':
            y_offset = 0
            for img in images:
                concat_image.paste(img, (0, y_offset))
                y_offset += img.size[1]
    return concat_image

if __name__ == '__main__':
    # 指定文件夹路径
    folder_path = 'E:\ceshi\jpg\\'
    # 获取文件夹下所有.jpg文件的路径列表
    all_image_paths = glob.glob(os.path.join(folder_path, '*.jpg'))
    # 按名称分类图片
    image_groups = {}
    for path in all_image_paths:
        # 获取图片名称的字段
        name = os.path.basename(path).split("-")[0]
        if name not in image_groups:
            image_groups[name] = []
        image_groups[name].append(path)
        # 对每个分类进行拼接
    for group_name, image_paths in image_groups.items():
        if len(image_paths) >= 2:  # 至少2张图片才进行拼接
            concat_image = concatenate_images(image_paths, 'vertical')
            concat_image.save(f'E:\ceshi\图片拼接\\{group_name}.jpg', 'JPEG')

展示界面:

拼接后图片:

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝Mm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值