首页 大数据

Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定

分类:大数据
字数: (4108)
阅读: (5341)
内容摘要:Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定,

每年一度的家长会,老师们总要准备 PPT。尤其是小学和幼儿园,展示孩子的成长照片是必不可少的环节。如果照片不多还好,手动一张张插入,加上文件名说明也勉强可以接受。但如果照片数量庞大,例如几百张,而且要求按照文件名排序,并区分横版和竖版照片,手动操作简直是噩梦。更别说还要调整照片大小,保证美观,还要让 PPT 页面比例符合 16:9 的标准。本文将使用 Python 快速批量制作 16:9 PPT相册,解决这个棘手的问题,将文件名直接添加到幻灯片中,并根据照片方向进行排版。

底层原理:Python 操作 PPT 的奥秘

要用 Python 操作 PPT,我们需要用到 python-pptx 库。这个库是对 PowerPoint 文件格式的封装,我们可以通过它来创建、修改 PPT 文件。它允许我们添加幻灯片、插入图片、设置文本框、调整字体和颜色等等。其底层原理是解析 PowerPoint 文件的 XML 结构,然后通过 Python 代码来修改这些 XML 内容。对于图片的处理,python-pptx 也提供了便捷的接口,可以自动调整图片大小以适应幻灯片。

Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定

安装 python-pptx 库

首先,我们需要安装 python-pptx 库。打开终端,执行以下命令:

Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定
pip install python-pptx

确保你的 Python 环境已经正确配置,并且能够访问 pip。

Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定

代码解决方案:Python 脚本实现 PPT 批量生成

下面是一个完整的 Python 脚本,用于批量生成家长会 PPT。

Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定
from pptx import Presentation
from pptx.util import Inches
import os

# 配置参数
image_folder = 'photos'  # 图片所在的文件夹
output_pptx = 'parent_meeting.pptx'  # 输出的 PPT 文件名
slide_width = Inches(16)  # 幻灯片宽度,16:9 比例
slide_height = Inches(9)  # 幻灯片高度,16:9 比例

# 创建 Presentation 对象
prs = Presentation()
prs.slide_width = slide_width
prs.slide_height = slide_height

# 设置空白版式(非常重要,避免默认版式影响布局)
blank_slide_layout = prs.slide_layouts[6]

# 遍历图片文件夹
image_files = sorted([f for f in os.listdir(image_folder) if f.endswith(('.jpg', '.jpeg', '.png'))])

for image_file in image_files:
    # 添加幻灯片
    slide = prs.slides.add_slide(blank_slide_layout)

    # 图片路径
    image_path = os.path.join(image_folder, image_file)

    # 获取图片尺寸
    try:
        from PIL import Image
        img = Image.open(image_path)
        width, height = img.size
    except ImportError:
        print("请先安装 Pillow 库:pip install Pillow")
        exit()

    # 根据图片方向调整布局
    if width > height:
        # 横版图片
        left = Inches(1)  # 左边距
        top = Inches(1)  # 上边距
        pic_width = Inches(14) # 图片宽度
        pic_height = Inches(7)
    else:
        # 竖版图片
        left = Inches(4)  # 左边距
        top = Inches(1)  # 上边距
        pic_width = Inches(8)  # 图片宽度
        pic_height = Inches(7)

    # 添加图片
    try:
        slide.shapes.add_picture(image_path, left, top, width=pic_width, height=pic_height)
    except Exception as e:
        print(f"Error adding picture {image_file}: {e}")
        continue

    # 添加文件名
    text_box = slide.shapes.add_textbox(Inches(1), Inches(7.5), Inches(14), Inches(1))
    text_frame = text_box.text_frame
    text_frame.text = image_file
    text_frame.auto_size = True  # 自动调整文本框大小
    text_frame.word_wrap = True # 允许文字换行

# 保存 PPT
prs.save(output_pptx)

print(f'PPT "{output_pptx}" 生成成功!')

代码解释:

  1. 导入库: 导入 python-pptx 库和 os 库,用于操作 PPT 和文件系统。
  2. 配置参数: 设置图片文件夹、输出 PPT 文件名、幻灯片宽高。
  3. 创建 Presentation 对象: 创建 PPT 对象,并设置幻灯片宽高为 16:9。
  4. 设置空白版式: 使用空白版式,避免默认版式干扰布局。
  5. 遍历图片文件夹: 遍历指定文件夹下的所有图片文件,并按照文件名排序。
  6. 添加幻灯片: 为每张图片添加一张幻灯片。
  7. 图片尺寸判断: 使用 Pillow 库获取图片尺寸,判断是横版还是竖版。
  8. 添加图片: 根据图片方向,调整图片的位置和大小,并添加到幻灯片中。
  9. 添加文件名: 在幻灯片下方添加一个文本框,显示图片的文件名。
  10. 保存 PPT: 将 PPT 保存到指定的文件中。

实战避坑经验总结

  1. 确保安装 Pillow 库: 脚本中使用了 Pillow 库来获取图片尺寸,如果未安装,会报错。可以使用 pip install Pillow 命令安装。
  2. 处理异常情况: 代码中使用了 try...except 块来处理添加图片可能出现的异常,例如图片文件损坏等。这样可以保证脚本的健壮性。
  3. 调整图片布局: 可以根据实际情况调整图片的位置和大小,以及文件名文本框的位置和字体大小,以达到最佳的显示效果。
  4. 文件名排序: sorted() 函数默认按照文件名升序排序,如果需要按照其他方式排序,可以自定义排序规则。例如按修改时间排序等。
  5. 中文字体支持: 默认情况下,python-pptx 可能无法正确显示中文字符。可以在代码中指定中文字体,例如宋体、微软雅黑等。需要在添加文本框后,获取 text_frame 对象的 font 属性,然后设置 font.name 为中文字体名称。
  6. 宝塔面板部署: 如果需要在服务器上运行此脚本,可以使用宝塔面板进行部署。将代码上传到服务器,安装必要的 Python 库,然后配置一个计划任务,定时执行脚本。
  7. 注意并发连接数:如果图片数量非常大,生成 PPT 过程可能消耗大量内存,建议分批次处理,避免服务器因内存不足而崩溃。尤其在高并发环境下,要注意服务器的配置和优化,例如调整 Nginx 的并发连接数,优化数据库查询等。

扩展应用:其他场景下的 PPT 批量生成

除了家长会 PPT,这个脚本还可以用于批量生成其他类型的 PPT,例如产品展示 PPT、培训 PPT、会议 PPT 等。只需要修改脚本中的图片文件夹、输出 PPT 文件名,以及图片和文本的布局即可。

Python 快速生成家长会 PPT:批量制作 16:9 相册,文件名信息一键搞定

转载请注明出处: 半杯凉茶

本文的链接地址: http://m.acea1.store/article/64652.html

本文最后 发布于2026-04-21 04:34:38,已经过了6天没有更新,若内容或图片 失效,请留言反馈

()
您可能对以下文章感兴趣
评论
  • 草莓味少女 1 天前
    请问下,这个脚本支持批量添加视频吗?或者有什么类似的方案可以实现批量添加视频的PPT?