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

def sort_images_by_number(filename):
    """
    从文件名中提取数字并用于排序。
    假设文件名格式为 'image1.png', 'pic_02.png', '3_screenshot.png' 等。
    """
    number_part = ''.join(filter(str.isdigit, filename))
    return int(number_part) if number_part else 0

def images_to_ppt():
    # 获取当前脚本所在目录
    current_dir = os.getcwd()
    # 获取当前文件夹的名称,用于命名输出的PPT文件
    folder_name = os.path.basename(current_dir)
    output_ppt = f"{folder_name}.pptx"

    # 列出当前目录下所有的 .png 文件
    png_files = [f for f in os.listdir(current_dir) if f.lower().endswith('.png')]

    if not png_files:
        print("当前目录下没有找到PNG图片文件。")
        return

    # 按文件名中的数字进行排序
    png_files.sort(key=sort_images_by_number)
    print(f"找到 {len(png_files)} 个PNG文件,按编号顺序排列如下:")
    for file in png_files:
        print(file)

    # 创建一个新的PPT演示文稿
    prs = Presentation()

    # 获取幻灯片页面的宽度和高度(单位:英寸)
    slide_width = prs.slide_width
    slide_height = prs.slide_height

    # 用户要求的图片尺寸:宽 25.44CM,高 14.29CM
    target_width_cm = 25.44
    target_height_cm = 14.29
    target_width = Inches(target_width_cm / 2.54)
    target_height = Inches(target_height_cm / 2.54)

    # 计算图片居中显示的左上角位置
    left = (slide_width - target_width) / 2
    top = (slide_height - target_height) / 2

    # 遍历排序后的图片文件,将每张图片插入到新的幻灯片中
    for img_file in png_files:
        img_path = os.path.join(current_dir, img_file)

        # 使用空白布局(通常是第6个布局,索引为5)
        slide_layout = prs.slide_layouts[5]
        slide = prs.slides.add_slide(slide_layout)

        # --- 关键修复:确保删除所有默认形状 ---
        # 有时候空白布局也可能包含隐藏的占位符,我们强制删除所有形状
        # 先将所有形状存入一个列表,再进行删除,避免遍历时列表变化的问题
        shapes_to_delete = list(slide.shapes)
        for shape in shapes_to_delete:
            # 检查形状是否为占位符(如标题框)
            if shape.is_placeholder:
                slide.shapes._spTree.remove(shape._element)

        # 插入图片,使用固定的目标宽度和高度,并放置在计算好的居中位置
        pic = slide.shapes.add_picture(img_path, left, top, width=target_width, height=target_height)

    # 保存生成的PPT文件,文件名是当前文件夹的名称
    prs.save(output_ppt)
    print(f"\nPPT文件已生成:{output_ppt}")

if __name__ == "__main__":
    # 在运行脚本前,请确保已安装 python-pptx 库
    # 安装命令:pip install python-pptx
    images_to_ppt()

这是一个Python脚本 把当前目录的 png图片 按图片编号顺序 批量插入PPT文件中,并以文件夹名称命名。

使用说明:

  1. 安装依赖库:在运行此脚本之前,请确保你的 Python 环境中已安装python-pptx库。如果尚未安装,可以通过以下命令安装:

    win+r   打开cmd窗口  运行

    pip install python-pptx
    
  2. 准备图片:将所有需要插入的 PNG 图片放在与这个 Python 脚本相同的目录下。

  3. 运行脚本:在终端或命令行中,切换到脚本所在目录,然后运行该脚本:

    bash

    运行

    python your_script_name.py
    

    (将your_script_name.py替换为你保存的脚本文件名)

  4. 查看结果:脚本执行完成后,会在当前目录下生成一个名为批量图片插入PPT.pptx的新 PPT 文件,其中包含了按编号顺序插入的所有 PNG 图片,每张图片占据一页幻灯片。

  1. 在你的 .py 文件所在的文件夹中,新建一个文本文档
  2. 用记事本打开这个文本文档,输入以下内容:

    batch

    @echo off
    python "你的脚本文件名.py"
    pause
    
    • 你的脚本文件名.py 替换为你实际的 Python 脚本文件名(包括扩展名)。
    • @echo off:关闭命令行的默认命令显示。
    • python "你的脚本文件名.py":调用 Python 解释器来运行你的脚本。
    • pause:执行完脚本后暂停,防止窗口自动关闭,让你可以看到输出结果。
  3. 点击 “文件” -> “另存为”
  4. 在 “保存类型” 中选择 “所有文件”,文件名填写为 运行脚本.bat(或其他你喜欢的名字,后缀必须是 .bat),然后点击 “保存”

现在,双击这个 .bat 文件,它就会打开命令行窗口并执行你的 Python 脚本,执行完毕后会显示 “请按任意键继续...”,方便你查看结果。

更多推荐