用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释放您的工作效率!

相关推荐
豌豆花下猫30 分钟前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
THMAIL35 分钟前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
wheeldown1 小时前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11
多打代码1 小时前
2025.09.05 用队列实现栈 & 有效的括号 & 删除字符串中的所有相邻重复项
python·算法
@CLoudbays_Martin112 小时前
为什么动态视频业务内容不可以被CDN静态缓存?
java·运维·服务器·javascript·网络·python·php
IT小农工2 小时前
Windows 文件资源管理器无法预览文件内容word、ppt、excel、pdf
windows·word·powerpoint
程序猿炎义2 小时前
【NVIDIA AIQ】自定义函数实践
人工智能·python·学习
THMAIL2 小时前
深度学习从入门到精通 - BERT与预训练模型:NLP领域的核弹级技术详解
人工智能·python·深度学习·自然语言处理·性能优化·bert
nuclear20113 小时前
Python 实现 Markdown 与 Word 高保真互转(含批量转换)
python·word转markdown·markdown转word·word转md·md转word
山烛3 小时前
深度学习:CNN 模型训练中的学习率调整(基于 PyTorch)
人工智能·pytorch·python·深度学习·cnn·调整学习率