首页 > 编程语言 >使用Python自动将照片文件夹转换为PowerPoint幻灯片

使用Python自动将照片文件夹转换为PowerPoint幻灯片

时间:2024-08-03 09:53:14浏览次数:15  
标签:Python filename 文件夹 path folder os PowerPoint 幻灯片

在这个数字时代,我们经常需要快速创建照片幻灯片来展示我们的回忆或工作成果。今天,我们将探讨如何使用Python来自动化这个过程,将一个文件夹中的所有照片转换为一个精美的PowerPoint演示文稿,每张照片占据一页,并以文件名作为标题。
C:\pythoncode\new\jpeginsertppt.py

全部代码

import wx
import os
from pptx import Presentation
from pptx.util import Inches

def select_folder():
    app = wx.App(None)
    dialog = wx.DirDialog(None, "选择包含照片的文件夹", style=wx.DD_DEFAULT_STYLE)
    if dialog.ShowModal() == wx.ID_OK:
        path = dialog.GetPath()
    else:
        path = None
    dialog.Destroy()
    return path

def is_image_file(filename):
    image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']
    return any(filename.lower().endswith(ext) for ext in image_extensions)

def create_ppt_from_photos(folder_path):
    prs = Presentation()
    for filename in os.listdir(folder_path):
        if is_image_file(filename):
            slide = prs.slides.add_slide(prs.slide_layouts[5])  # 使用标题和内容布局
            title = slide.shapes.title
            title.text = os.path.splitext(filename)[0]  # 使用文件名(不包括扩展名)作为标题
            
            img_path = os.path.join(folder_path, filename)
            left = top = Inches(1)
            pic = slide.shapes.add_picture(img_path, left, top, height=Inches(5))
    
    output_path = os.path.join(folder_path, "照片幻灯片.pptx")
    prs.save(output_path)
    return output_path

def main():
    folder_path = select_folder()
    if folder_path:
        output_path = create_ppt_from_photos(folder_path)
        print(f"PPT文件已保存到: {output_path}")
    else:
        print("未选择文件夹。")

if __name__ == "__main__":
    main()
`` 
## 需求背景

想象一下,你刚从一次精彩的旅行回来,相机里有成百上千张照片。你想快速创建一个幻灯片来与朋友和家人分享,但手动操作太耗时了。这就是我们的Python脚本可以派上用场的地方!

## 技术栈

我们将使用以下Python库:

1. **wxPython**: 用于创建文件选择对话框
2. **os**: 用于文件系统操作
3. **python-pptx**: 用于创建和编辑PowerPoint文件

## 核心功能

我们的脚本主要包含以下功能:

1. 选择包含照片的文件夹
2. 识别文件夹中的图片文件
3. 为每张图片创建一个新的PPT幻灯片
4. 将图片文件名设置为幻灯片标题
5. 保存生成的PowerPoint文件

## 代码实现

让我们来看看核心代码:

```python
import wx
import os
from pptx import Presentation
from pptx.util import Inches

def select_folder():
    app = wx.App(None)
    dialog = wx.DirDialog(None, "选择包含照片的文件夹", style=wx.DD_DEFAULT_STYLE)
    if dialog.ShowModal() == wx.ID_OK:
        path = dialog.GetPath()
    else:
        path = None
    dialog.Destroy()
    return path

def is_image_file(filename):
    image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']
    return any(filename.lower().endswith(ext) for ext in image_extensions)

def create_ppt_from_photos(folder_path):
    prs = Presentation()
    for filename in os.listdir(folder_path):
        if is_image_file(filename):
            slide = prs.slides.add_slide(prs.slide_layouts[5])
            title = slide.shapes.title
            title.text = os.path.splitext(filename)[0]
            
            img_path = os.path.join(folder_path, filename)
            left = top = Inches(1)
            pic = slide.shapes.add_picture(img_path, left, top, height=Inches(5))
    
    output_path = os.path.join(folder_path, "照片幻灯片.pptx")
    prs.save(output_path)
    return output_path

def main():
    folder_path = select_folder()
    if folder_path:
        output_path = create_ppt_from_photos(folder_path)
        print(f"PPT文件已保存到: {output_path}")
    else:
        print("未选择文件夹。")

if __name__ == "__main__":
    main()

代码解析

  1. select_folder() 函数使用wxPython创建一个用户友好的文件夹选择对话框。
  2. is_image_file() 函数检查文件扩展名,确定是否为支持的图片格式。
  3. create_ppt_from_photos() 是核心函数,它遍历文件夹,为每张图片创建幻灯片,并设置标题。
  4. 最后,生成的PPT文件保存在原始文件夹中,命名为"照片幻灯片.pptx"。

如何使用

  1. 安装必要的库: pip install wxPython python-pptx
  2. 运行脚本
  3. 在弹出的对话框中选择包含照片的文件夹
  4. 等待脚本处理完成
  5. 在选定的文件夹中找到生成的"照片幻灯片.pptx"文件

结果如下

在这里插入图片描述

总结

通过这个简单而强大的Python脚本,我们实现了照片到PowerPoint幻灯片的自动转换。这不仅节省了大量时间,还提供了一个整洁、一致的方式来展示我们的照片集。

这个项目还有很多扩展的可能性,比如添加自定义主题、调整图片大小和位置,甚至加入背景音乐。Python的灵活性和强大的库支持,使得这些功能的实现变得简单而有趣。

希望这个教程能激发你的创意,帮助你更好地利用Python来简化日常任务。快来试试吧,让你的照片讲述精彩的故事!

标签:Python,filename,文件夹,path,folder,os,PowerPoint,幻灯片
From: https://blog.csdn.net/winniezhang/article/details/140843761

相关文章

  • Python的GDAL库绘制多波段、长时序遥感影像时间曲线图
      本文介绍基于Python中的gdal模块,对大量长时间序列的栅格遥感影像文件,绘制其每一个波段中、若干随机指定的像元的时间序列曲线图的方法。  在之前的文章中,我们就已经介绍过基于gdal模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法。不过当时文章中的需求,每1个时......
  • 仅从 Dash Python 中的表中提取过滤后的数据
    我用DashPython构建了一个网站,并将csv文件的所有数据显示在一个可以过滤的表中。我希望用户能够从表中提取数据。当没有过滤器时,我希望他能够提取完整的数据,当他过滤数据时,我希望他能够提取过滤后的数据。为此,我使用dcc.download组件,它是工作得很好,我还使用d......
  • 如何使用pipenv解决Python包依赖关系?
    我正在使用pipenv处理Python包依赖项。Python包使用两个包(名为pckg1和pckg2),它们依赖于名为pckg3的同一个包,但来自两个不同的包版本显示依赖关系树:$pipenvgraphpckg1==3.0.0-pckg3[required:>=4.1.0]......
  • 存在的开放路径不起作用 - python
    代码获取测试logs\log.jsonl的根路径,该路径在图像中显然在那里,但无法打开它#doesntworkdir_path=os.path.dirname(os.path.realpath(__file__))withopen(os.path.join(dir_path,"logs\\log.jsnol"),'r')asjsondata:data=json.load(jsondata)wit......
  • 如何在系统PATH中永久添加路径? - Python
    我正在为我的一个项目创建一个安装程序,下载该项目的二进制文件(在ZIP文件中),然后将其解压缩到操作系统程序文件夹中的一个目录中,我想将此目录添加到|||。我的脚本是一个带有UI的安装程序,其目的是编译为PATH/可执行文件。如果你能找到我一种.exe平台无关......
  • python数据分析与可视化基础
    一、数据分析介绍:1.数据分析含义:数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。数据分析的数学基础在20世纪早......
  • 为什么要设置 os.environ[“PYTHONHASHSEED“] = “0“,这样做具体会影响哪些随机值?
    ......
  • Python,Geopandas报错,AttributeError: The geopandas.dataset has been deprecated and
    Python版本3.9,Geopandas版本1.0.1问题描述:这是执行的代码,importpandasaspdimportgeopandasimportmatplotlib.pyplotaspltworld=geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))world.plot()plt.show()这是报错信息,Traceback(mo......
  • Python,Maskrcnn训练,cannot import name ‘saving‘ from ‘keras.engine‘ ,等问题集合
    Python版本=3.9,tensorflow=2.11.0,keras==2.11.0问题一、module'keras.engine'hasnoattribute'Layer'Traceback(mostrecentcalllast):File"C:\Users\Administrator\Desktop\20240801\代码\test.py",line16,in<module>......
  • 7-Python数据类型——列表和元组的详解(增删改查、索引、切片、步长、循环)
    一、列表1.1列表list有序且可变的容器,可以存放多个不同类型的元素列表就是专门用来记录多个同种属性的值列表:存储同一个类别的数据,方便操作字符串,不可变:即:创建好之后内部就无法修改【内置功能都是新创建一份数据】name="xiaochaun"data=name.upper()print(nam......