美文网首页
Python实现双排拼图

Python实现双排拼图

作者: 有几米爱音乐 | 来源:发表于2023-03-20 14:59 被阅读0次

这段代码的目的是将指定文件夹中的所有png图片按照文件名排序后,将两张图片拼接成一张图片,最终生成一张长图。
可以将PDF文件利用WPS等工具导出图片(后缀可改)后实现拼图

import os
from PIL import Image

# 输入包含图像的目录
directory = input("请输入图片文件夹路径:")

# 获取目录中所有png文件的列表
image_files = [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.png')]

#按文件名对图像文件进行排序
image_files.sort()

Image.MAX_IMAGE_PIXELS = None #禁用Pillow库的默认限制,允许处理任意大小的图像。

if len(image_files) > 0:
    try:
        #创建一个新图像,宽度是第一张图像的两倍,高度是所有图像的高度之和
        first_image = Image.open(image_files[0])
        new_image = Image.new('RGB', (first_image.width*2, first_image.height * len(image_files)//2))

        #将所有图像按照顺序拼接到新图像中,每次拼接两张图像
        for i in range(0, len(image_files) - 1, 2):
            try:
                image1 = Image.open(image_files[i])
                image2 = Image.open(image_files[i+1])
                new_image.paste(image1, (0, first_image.height * (i//2)))
                new_image.paste(image2, (first_image.width, first_image.height * (i//2)))
            except Image.DecompressionBombError as e:
                print(f"DecompressionBombError: {e}")
                break

        # 保存新图片到原文件夹
        new_image.save(os.path.join(directory, 'long_image.png'))
    except NameError:
        print("NameError: name 'PIL' is not defined")
else:
    print("IndexError: list index out of range")

缺点:生成的文件太太太太大了

相关文章

网友评论

      本文标题:Python实现双排拼图

      本文链接:https://www.haomeiwen.com/subject/wjnurdtx.html