用Python一键生成PNG图片的PowerPoint幻灯片

在当今的商业环境中,PowerPoint演示是展示和传递信息的常用方式。然而,手动将大量图像插入到幻灯片中往往是一项乏味且耗时的工作。但是,通过Python编程,我们可以轻松自动化这个过程,节省时间和精力。

C:\pythoncode\new\folderTOppt.py

在本文中,我将介绍如何使用Python、wxPython和python-pptx库编写一个脚本,将指定文件夹中的所有PNG图像逐一插入到一个新的PowerPoint演示文稿中,每张图像占据一个全尺寸幻灯片。无需手动操作,只需运行这个脚本,就可以快速生成包含所有PNG图像的演示文稿。

第一步:安装所需的Python库

要运行此脚本,我们需要安装以下Python库:

  • wxPython: 用于创建图形用户界面(GUI),让用户选择图像文件夹。

  • python-pptx: 用于创建和操作PowerPoint演示文稿。

您可以使用Python的包管理器pip来安装这些库:

bash 复制代码
pip install wxpython python-pptx

第二步:编写Python脚本

以下是完整的Python脚本代码:

python 复制代码
import wx
import os
import pptx
from pptx.util import Inches, Pt

# 创建wxPython应用程序
app = wx.App()

# 创建文件夹选择对话框
dialog = wx.DirDialog(None, "选择文件夹", style=wx.DD_DEFAULT_STYLE)
if dialog.ShowModal() == wx.ID_OK:
    folder_path = dialog.GetPath()
else:
    print("未选择有效的文件夹")
    exit()

dialog.Destroy()

# 创建新的PowerPoint演示文稿
ppt = pptx.Presentation()

# 获取幻灯片的宽度和高度
slide_width = int(ppt.slide_width.inches * 914400)  # 将英寸转换为pptx单位
slide_height = int(ppt.slide_height.inches * 914400)  # 将英寸转换为pptx单位

# 遍历文件夹中的所有PNG文件
for filename in os.listdir(folder_path):
    if filename.endswith(".png"):
        # 获取图像文件路径
        image_path = os.path.join(folder_path, filename)

        # 创建新的幻灯片
        slide = ppt.slides.add_slide(ppt.slide_layouts[6])  # 使用空白布局

        # 在幻灯片中添加图像
        picture = slide.shapes.add_picture(image_path, Inches(0), Inches(0), height=slide_height)

        # 计算等比例缩放后的图像大小
        picture_width = picture.width
        picture_height = picture.height
        max_picture_width = slide_width - int(Inches(1).inches * 914400)  # 减去1英寸边距
        max_picture_height = slide_height - int(Inches(1).inches * 914400)  # 减去1英寸边距
        scale_ratio = min(max_picture_width / picture_width, max_picture_height / picture_height)
        new_picture_width = int(picture_width * scale_ratio)
        new_picture_height = int(picture_height * scale_ratio)

        # 设置图像的大小和位置
        picture.left = (slide_width - new_picture_width) // 2
        picture.top = (slide_height - new_picture_height) // 2
        picture.width = new_picture_width
        picture.height = new_picture_height

# 保存PowerPoint演示文稿
save_dialog = wx.FileDialog(None, "保存PowerPoint文件", wildcard="PowerPoint文件 (*.pptx)|*.pptx", style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if save_dialog.ShowModal() == wx.ID_OK:
    ppt_file_path = save_dialog.GetPath()
    ppt.save(ppt_file_path)
else:
    print("未选择有效的保存路径")

save_dialog.Destroy()

让我们逐步解释这段代码:

  1. 首先,我们导入所需的Python库:wxPython用于创建GUI,os用于文件操作,pptx用于创建和操作PowerPoint文件。

  2. 然后,我们创建一个wxPython应用程序和一个文件夹选择对话框,让用户选择包含PNG图像的文件夹。

  3. 接下来,我们创建一个新的PowerPoint演示文稿,并获取幻灯片的宽度和高度(以pptx单位表示)。

  4. 我们遍历选定文件夹中的所有PNG文件。对于每个PNG文件:

  • 我们创建一个新的幻灯片,使用空白布局。

  • 我们在幻灯片中添加该PNG图像,并根据图像的宽高比,按等比例缩放图像以适应幻灯片大小,同时保留1英寸的边距。

  • 我们将缩放后的图像居中显示在幻灯片上。

  1. 最后,我们打开另一个文件对话框,让用户选择保存PowerPoint文件的位置,并将演示文稿保存到指定位置。

就是这样!通过运行这个Python脚本,您可以轻松地将一个文件夹中的所有PNG图像插入到一个新的PowerPoint演示文稿中,每张图像占据一个全尺寸幻灯片。这不仅节省了大量时间,而且确保了所有图像的一致性和专业外观。

无论您是需要准备产品演示、培训材料还是图片集锦,这个脚本都将为您提供极大的便利。尝试一下吧,让Python释放您的工作效率!

相关推荐
Hello 0 11 小时前
视频号直播视频录制
python·音视频·流媒体·直播视频录制
FreeCode1 小时前
LangSmith本地部署LangGraph应用
python·langchain·agent
mit6.8241 小时前
py期中实验选题:实现天气预测
python·算法
Rolei_zl2 小时前
AIGC(生成式AI)试用 41 -- 程序(Python + OCR)-3
python·aigc
eybk2 小时前
使用Beeware开发文件浏览器获取Android15的文件权限
python
柒柒钏2 小时前
VSCode 终端配置与 Python 虚拟环境使用指南
ide·vscode·python
环己酮3 小时前
py数据科学学习笔记day4-空间数据统计分析与可视化(2)
python
q***48253 小时前
基于python语言的网页设计(手把手教你设计一个个人博客网站)
开发语言·python
qq_22589174663 小时前
基于Python+Django餐饮评论大数据分析与智能推荐系统 毕业论文
开发语言·后端·python·信息可视化·数据分析·django
FreakStudio4 小时前
串口协议解析实战:以 R60ABD1 雷达为例,详解 MicroPython 驱动中数据与业务逻辑的分离设计
python·单片机·pycharm·嵌入式·面向对象·硬件·电子diy