软件介绍
这个软件的作用就是将单个PPT的每一页转换为单独的图片,然后将图片进行拼接起来。
但是我没有还没有解决一次性处理多个文件。
效果展示如下:

软件安装
软件源码
python
import os
import re
import win32com.client
from PIL import Image
def convert_ppt_to_png(ppt: str, output_folder: str) -> None:
try:
pptObj = win32com.client.Dispatch("PowerPoint.Application")
except Exception as e:
raise RuntimeError(f"无法启动 PowerPoint 应用程序: {e}")
if not os.path.exists(ppt):
raise FileNotFoundError(f"PPT 文件不存在: {ppt}")
presentation = pptObj.Presentations.Open(ppt, WithWindow=False)
presentation.SaveAs(output_folder, 18)
presentation.Close()
pptObj.Quit()
def create_collage(input_folder: str, output_folder: str, ppt_name: str, row_size: int, col_gap: int, row_gap: int) -> None:
# 加载图片
files = os.listdir(input_folder)
# 匹配"幻灯片数字.png"格式的文件,不区分大小写
slide_files = [f for f in files if re.match(r"幻灯片\d+\.png", f, re.IGNORECASE)]
if not slide_files:
raise RuntimeError(f"未找到幻灯片图片文件")
# 按数字排序幻灯片图片
slide_files.sort(key=lambda x: int(re.search(r'\d+', x).group()))
# 打开所有图片
try:
images = [Image.open(os.path.join(input_folder, f)) for f in slide_files]
except Exception as e:
raise RuntimeError(f"加载图片时出错: {e}")
# 获取图片尺寸
if not images:
raise RuntimeError("没有可处理的图片")
width, height = images[0].size
# 第一行图片放大显示
first_img = images[0].resize(
(width * row_size + col_gap * (row_size - 1),
height * row_size + int(col_gap * (row_size - 1) * height / width)),
Image.LANCZOS
)
remaining_images = images[1:]
# 计算画布尺寸
rows = (len(remaining_images) + row_size - 1) // row_size
canvas_width = first_img.width
canvas_height = first_img.height + rows * (height + row_gap)
# 创建画布
collage_image = Image.new("RGB", (canvas_width, canvas_height), (255, 255, 255))
# 粘贴第一张放大的图片
collage_image.paste(first_img, (0, 0))
# 粘贴剩余图片
for i, img in enumerate(remaining_images):
row = i // row_size
col = i % row_size
x = col * (width + col_gap)
y = first_img.height + row * (height + row_gap)
collage_image.paste(img, (x, y))
# 指定拼贴画的保存路径,使用PPT文件名
collage_path = os.path.join(output_folder, f"{ppt_name}.png")
collage_image.save(collage_path)
# 删除临时PNG文件
for f in slide_files:
os.remove(os.path.join(input_folder, f))
if __name__ == "__main__":
ppt = r'D:\Desktop\文件存储\1\6.5世界环境日主题课件1.pptx'
output_folder = r'D:\Desktop\文件存储\1'
row_size = 3 # 每行图片数量
col_gap = 10 # 列间距(像素)
row_gap = 10 # 行间距(像素)
# 从PPT路径中提取文件名(不带扩展名)
ppt_filename = os.path.basename(ppt)
ppt_name = os.path.splitext(ppt_filename)[0]
# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)
# 首先将PPT转换为PNG图片
convert_ppt_to_png(ppt, output_folder)
# 然后从生成的图片创建拼贴画
create_collage(output_folder, output_folder, ppt_name, row_size, col_gap, row_gap)
print(f"处理完成,拼贴画已保存为: {ppt_name}.png")
# 保持程序打开,等待用户输入
input("按回车键退出...")
只需要把文件路径替换为自己的就行