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

相关推荐
qq_158895411117 小时前
AI 音乐生成完成后,音频 URL 为什么会过期?一套可恢复的交付方案
python·api·ai音乐
Warson_L9 小时前
高性能架构设计
python·go
databook9 小时前
新数据到手,先跑哪几步检查
python·数据分析
czq_268671948710 小时前
Python打卡第46天
开发语言·python
Flynt11 小时前
日涨4000星的OSINT工具,我拿Linus的用户名和一个随机字符串实测了一遍
python·安全
曲径海盗14 小时前
【Python 学习第 53 天】列表基础
python·学习笔记·编程入门
Dumbness14 小时前
群里 @ 机器人发"查订单",指令一条都没命中:微信群机器人在路由前漏掉的几步归一化
python·微信
用户16148409554514 小时前
用 M4 Pro 跑羽毛球视频 AI 分析(二):TrackNet MPS 加速 3.2 倍、卡尔曼滤波补漏与自动回合剪辑
python
用户40199255686114 小时前
基于对话树回溯的社媒评论流买方意图识别与噪音过滤实践
python
用户03321266636715 小时前
使用 Python 加密或解密 PDF 文档
python