使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

2025-04-24 05:50

本文主要是介绍使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了...

一、引言

PPT是一种高效的信息展示工具,广泛应用于教育、商务js和设计等多个领域。PPT文档中常常包含丰富的图片内容,这些图片不仅提升了视觉效果,也增强了信息的传递效率。将这些图片从PPT中提取出javascript来,可以再次用于其他文档、宣传册、网站或社交媒体内容中。

本文将介绍如何使用 Python 实现自动化提取 PowerPoint(PPT 或 PPTX)文件中的图片。主要内容包括提取PPT背景图片(幻灯片背景图片和幻灯片模板背景图片)、从幻灯片形状中提取图片,从整个PPT文档中提取图片,以及提取图片的相关信息,如坐标位置、宽度和高度等。

二、环境与工具

在提取 PPT 中的图片之前,需要确保你的计算机上已安装 Python。如果没有安装,可前往 Python 官方网站下载安装。

安装完成后,需要安装 Spire.Presentation for Python 库,该库主要用于生成、操作和转换PPT演示文稿。安装步骤如下:

  • 打开终端
  • 输入以下命令并回车:
pip install spire.presentation

三、Python 提取PPT背景图片

PowerPoint 幻灯片通常包含美观的背景图片,这些图片可能存在于单个幻灯片中,也可能存在于幻灯片母版(模板)中。提取这些背景图片,对于设计师、教育工作者或需要复用素材的用户来说非常有用。

3.1 提取幻灯片背景图片

要提取PPT幻灯片中的背景图片,可通过以下步骤http://www.chinasem.cn来实现:

  • 初始化 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载PPT或PPTX文件。
  • 通过Presentation.Slides集合遍历文件中的幻灯片。
    • 通过 ISlide.SlideBackground.Fill.FillType 属性判断每张幻灯片的背景填充类型是否为图片填充。
      • 若为图片填充,则提取背景图片并保存为图片文件。

实现代码:

from spire.presentation import *
import os
 
def extract_background_images_from_slides(ppt_path, output_folder):
    """从幻灯片中提取背景图片"""
    presentation = Presentation()
    presentation.LoadFromFile(ppt_path)
    os.makedirs(output_folder, exist_ok=True)
 
    for i, slide in enumerate(presentation.Slides):
        bgd = slide.SlideBackground
        if bgd.Fill.FillType == FillFormatType.Picture:
            image_data = bgd.Fill.PictureFill.Picture.EmbedImage
            output_path = os.path.join(output_folder, f"幻灯片背景_{i}.png")
     China编程       image_data.Image.Save(output_path)
 
    presentation.Dispose()
 
# 使用示例
extract_background_images_from_slides("测试.pptx", "图片")

3.2 提取幻灯片母版背景图片

从幻灯片母版中提取背景图片的步骤与以上步骤类似,只是遍历的集合改为Presentation.Masters。具体步骤如下:

  • 初始化 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载PPT或PPTX文件。
  • 通过Presentation.Masters集合遍历文件中的幻灯片母版。
    • 通过IMasterSlide.SlideBackground.Fill.FillType属性判断每个幻灯片母版的背景填充类型是否为图片填充。
      • 若为图片填充,则提取背景图片并保存为图片文件。

实现代码:

from spire.presentation import *
import os
 
def extract_background_images_from_slide_masters(ppt_path, output_folder):
    """从幻灯片母版中提取背景图片"""
    presentation = Presentation()
    presentation.LoadFromFile(ppt_path)
    os.makedirs(output_folder, exist_ok=True)
 
    for i, slide_master in enumerate(presentation.Masters):
        bgd = slide_master.SlideBackground
        if bgd.Fill.FillType == FillFormatType.Picture:
            image_data = bgd.Fill.PictureFill.Picture.EmbedImage
            output_path = os.path.join(output_folder, f"幻灯片母版背景_{i}.png")
            image_data.Image.Save(output_path)
 
    presentation.Dispose()
 
# 使用示例
extract_background_images_from_slide_masters("测试.pptx", "图片")

四、Python 从PPT幻灯片的形状中提取图片

PPT 幻灯片中的图片也可能以形状对象的形式存在,提取步骤如下:

  • 初始化 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载PPT或PPTX文件。
  • 通过Presentation.Slides集合遍历文件中的幻灯片。
  • 通过ISlide.Shapes集合遍历每张幻灯片中的所有形状。
  • 判断形状是否为 PictureShape 或 SlidePicture 对象。
    • 若为PictureShape 或 SlidePicture 对象,则提取图片并保存为图片文件。

实现代码

from spire.presentation import *
import os
 
def extract_images_from_shapes(ppt_path, output_folder):
    """从幻灯片形状中提取图片"""
    presentation = Presentation()
    presentation.LoadFromFile(ppt_path)
    os.makedirs(output_folder, exist_ok=True)
 
    img_count = 0
 
    for slide_index, slide in enumerate(presentation.Slides):
        for shape_index, shape in enumerate(slide.Shapes):
            if isinstance(shape, PictureShape):
                image_data = shape.EmbedImage
            elif isinstance(shape, SlidePicture):
                image_data = shape.PictureFill.Picture.EmbedImage
            else:
                continue
 
            img_count += 1
            output_path = os.path.join(output_folder, f"图片_{img_count}.png")
            image_data.Image.Save(output_path)
 
    presentation.Dispose()

五、Python 提取PPT中的图片信息(如坐标、宽度和高度等)

在进行 PPT文档分析或自动化处理时,可能需要获取图片的具体信息,例如:

  • 坐标(相对于幻灯片左上角的位置)
  • 尺寸(图片的宽度和高度,单位为磅)

可通过以下编程China编程步骤提取这些信息:

  • 初始化 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载PPT或PPTX文件。
  • 通过Presentation.Slides集合遍历文件中的幻灯片。
  • 通过ISlide.Shapes集合遍历每张幻灯片中的所有形状。
  • 判断形状是否为 PictureShape 或 SlidePicture 对象。
    • 若为PictureShape 或 SlidePicture 对象,则获取当前图片的X/Y坐标、宽度、高度和所在幻灯片等信息。

实现代码

from spire.presentation import *
 
def extract_image_metadata(ppt_path):
    """获取 PPT 中图片的信息(所在幻灯片、坐标位置、宽度与高度等)"""
    presentation = Presentation()
    presentation.LoadFromFile(ppt_path)
 
    for slide_index, slide in enumerate(presentation.Slides):
        for shape_index, shape in enumerate(slide.Shapes):
            if isinstance(shape, PictureShape) or isinstance(shape, SlidePicture):
                x = shape.Frame.Rectangle.X
                y = shape.Frame.Rectangle.Y
                width = shape.Frame.Rectangle.Width
                height = shape.Frame.Rectangle.Height
                print(f"幻灯片 {slide_index + 1},形状 {shape_index + 1}:X={x}, Y={y}, 宽度={width}, 高度={height}")
 
    presentation.Dispose()
 
# 使用示例
extract_image_metadata("测试.pptx")

六、Python 从整个PPT文档中提取图片

如果要从整个PPT文档中提取图片,可遍历 Presentation.Images 集合。具体步骤如下:

  • 初始化 Presentation 类的实例,并使用 Presentation.LoadFromFile() 方法加载PPT或PPTX文件。
  • 使用Presentation.Images 集合遍历PPT文档中的图片。
    • 提取每张图片并保存为图片文件。

实现代码

from spire.presentation import *
import os
 
def extract_images_from_presentation(ppt_path, output_folder):
    """提取整个PPT文档中的图片"""
    presentation = Presentation()
    presentation.LoadFromFile(ppt_path)
    os.makedirs(output_folder, exist_ok=True)
 
    for i, image in enumerate(presentation.Images):
        output_path = os.path.join(output_folder, f"图片_{i}.png")
        image.Image.Save(output_path)
 
    presentation.Dispose()
 
# 使用示例
extract_images_from_presentation("测试.pptx", "图片")

以上就是使用Python从PPT中提取图片和图片信息的全部内容。

到此这篇关于使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)的文章就介绍到这了,更多相关Python提取PPT图片和图片信息内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154346

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4