实用指南:PPT转图片拼贴工具 v1.0

软件介绍

这个软件的作用就是将单个PPT的每一页转换为单独的图片,然后将图片进行拼接起来。

但是我没有还没有克服一次性处理多个文件。

效果展示如下:

软件安装

软件源码

import osimport reimport win32com.clientfrom 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("按回车键退出...")

只需要把文件路径替换为自己的就行

源码下载


链接:https://pan.quark.cn/s/7aee9f6a4d62

posted @ 2025-07-24 18:27  yjbjingcha  阅读(13)  评论(0)    收藏  举报