这段代码的目的是将指定文件夹中的所有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")
缺点:生成的文件太太太太大了