该代码是一个Python脚本,用于将指定文件夹中的多张图片按垂直方向拼接成一张长图。
- PIL是一个用于图像处理的库,提供了许多功能来处理、编辑和转换图像。通过导入
Image
模块,你可以使用PIL库中的各种图像处理功能。os
模块提供了许多与操作系统交互的功能,如文件和目录操作、进程管理等。通过导入这个模块,你可以使用它提供的各种功能来与操作系统进行交互。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')
展示界面:
拼接后图片: