【办公类-40-02】20240311 python模仿PPT相册功能批量插入照片,更改背景颜色 (家长会系列二)

作品展示------用Python插入PPT相册

背景需求:

马上就要家长会,我负责做会议前的照片滚动PPT,通常都是使用PPT的相册功能批量导入照片,

生成给一个新的PPT文件

更改背景颜色

设置4秒间隔,应用到全部

保存,改名字

我想用Python实现"PPT相册插入图片"的效果

参考:

1、AI对话大师

2、专业代码

2、python程序24:批量导入图片至一个PPT文件 - 知乎有时候一个在做PPT的时候,可能需要很多的图片导入到文件中,那么怎么做才能准确又高效呢?今天我们写一个python用于批量导入图片至每一页PPT中,并填充图片自动匹配纵横比。 这里需要引入模块: pip install pyth...https://zhuanlan.zhihu.com/p/642958843?utm_id=0

素材准备:

代码展示

python 复制代码
'''
家长会PPT:相册功能插入照片(保持原图长宽比,但适应幻灯片大小),背景颜色更改
作者:
1、https://zhuanlan.zhihu.com/p/642958843?utm_id=0
2、aI对话大师 、阿夏
时间:2024年3月11日
'''


from pptx import Presentation
from PIL import Image
import os

def create_slideshow(images_folder):
    prs = Presentation()

     # 设置幻灯片背景颜色为浅蓝色
    for slide in prs.slides:
        background = slide.background
        fill = background.fill
        fill.solid()
        fill.fore_color.rgb = (79, 129, 189)  # 浅蓝色的RGB值

    # 设置每页切换时间为4秒
    prs.slide_milliseconds = 4000


    # 获取文件夹中的所有图片文件
    image_files = [file for file in os.listdir(images_folder) if file.endswith(('.jpg', '.jpeg', '.png'))]

    for image_file in image_files:
        # 打开图片并获取其宽度和高度
        image_path = os.path.join(images_folder, image_file)
        image = Image.open(image_path)
        width, height = image.size

        # 设置16:9比例的幻灯片大小
        prs.slide_width = 16 * 914400  # 16 inches converted to EMUs
        prs.slide_height = 9 * 914400   # 9 inches converted to EMUs

        # 计算图片在幻灯片上的大小和位置
        slide_width = prs.slide_width
        slide_height = prs.slide_height
        slide_ratio = slide_width / slide_height
        image_ratio = width / height

        if slide_ratio > image_ratio:
            # 在幻灯片上添加带有黑色边框的图片
            left = (slide_width - slide_height * image_ratio) / 2
            top = 0
            prs.slides.add_slide(prs.slide_layouts[1])
            slide = prs.slides[-1]
            slide.shapes.add_picture(image_path, left, top, slide_height * image_ratio, slide_height)
        else:
            # 在幻灯片上添加带有黑色边框的图片
            left = 0
            top = (slide_height - slide_width / image_ratio) / 2
            prs.slides.add_slide(prs.slide_layouts[1])
            slide = prs.slides[-1]
            slide.shapes.add_picture(image_path, left, top, slide_width, slide_width / image_ratio)

    from pptx.dml.color import RGBColor

    # 设置幻灯片背景颜色为浅蓝色
    for slide in prs.slides:
        background = slide.background
        fill = background.fill
        fill.solid()
        fill.fore_color.rgb = RGBColor(173, 216, 230)  # 浅蓝色的RGB值

    # 设置每页切换时间为4秒
    prs.slide_milliseconds = 4000

    # 保存幻灯片为PPT文件
    prs.save(r'D:\家长会PPT\20240313中4班家长会相册.pptx')

# 传入存储图片的文件夹路径
create_slideshow(r'D:\家长会PPT\照片')

说明:

1向AI问了无数次,本文终于实现了"相册插入图片"+"背景颜色修改""自动保存pptx名称"三个功能,

2、幻灯片每页切换和插入循环音乐还没有实现......

感悟:

用Python代码几乎5秒就生成了PPT相册导入的照片的效果,比起手动点击的诸多步骤------新建PPT-"相册"-添加路径-创建-更改背景色-应用到全部等,不知道快多少,还可以反复生成。

技术提升效率,改变思维!!!

相关推荐
烂蜻蜓13 分钟前
Flask入门教程(十五):错误处理与日志——打造健壮的Web应用
前端·python·flask
2401_8906034022 分钟前
Python入门语法(一)
java·开发语言·python
烂蜻蜓28 分钟前
Flask入门教程(十六):中间件与扩展——增强应用功能的两种机制
python·中间件·flask
烂蜻蜓2 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
jay神2 小时前
【计算机毕业设计】基于Flask+Vue的电影数据可视化与智能推荐系统
前端·vue.js·python·信息可视化·flask·毕业设计·课程设计
满怀冰雪3 小时前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
DeepVisionary9 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃9 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰9 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融