Python 提取PowerPoint文档中的图片

news/2024/11/14 18:03:09/文章来源:https://www.cnblogs.com/Yesi/p/18540124

如果你需要在多个PowerPoint演示文稿中使用相同的图片,直接从原始PPT中提取并保存图片可以避免重复寻找和下载。此外,将PPT中的重要图片提取出来可以将其作为备份,以防原文件损坏或丢失。本文将通过以下两个示例介绍如何使用Python提取PPT文档中的图片。

  • Python 提取指定幻灯片中的图片
  • Python 提取PPT文档中的所有图片

 

所需Python库:Spire.Presentation for Python。该库支持多种PPT/PPTX文档处理操作,如创建、编辑、转换、保存等。可以直接通过以下pip命令安装它:

pip install Spire.Presentation

 

Python 提取指定幻灯片中的图片

要提取指定幻灯片中的图片,需要遍历幻灯片中所有形状并逐一判断其是否为 SlidePicturePictureShape 类型,如果是的话再通过对应方法提取并保存。步骤如下:

  1. 通过 LoadFromFile() 方法加载PPT文档
  2. 通过 Presentation.Slides[index] 属性获取指定幻灯片
  3. 遍历幻灯片中所有形状
  4. 判断形状是否为 SlidePicture 类型,如果是,则通过 SlidePicture.PictureFill.Picture.EmbedImage.Image.Save() 方法提取图片并保存
  5. 判断形状是否为 PictureShape 类型,如果是,则通过 PictureShape.EmbedImage.Image.Save() 方法提取图片并保存。

代码:

from spire.presentation.common import *
from spire.presentation import *# 加载PPT文档
ppt = Presentation()
ppt.LoadFromFile("工作汇报.pptx")# 获取第一张幻灯片
slide = ppt.Slides[0]i = 0
# 遍历幻灯片中所有形状
for s in slide.Shapes:# 判断形状是否为SlidePicture类型if isinstance(s, SlidePicture):# 提取该类型图片ps = s if isinstance(s, SlidePicture) else Noneps.PictureFill.Picture.EmbedImage.Image.Save("幻灯片图片/幻灯片图_"+str(i)+".png")i += 1# 判断形状是否为PictureShape类型if isinstance(s, PictureShape):# 提取该类型图片ps = s if isinstance(s, PictureShape) else Noneps.EmbedImage.Image.Save("幻灯片图片/幻灯片图_"+str(i)+".png")i += 1ppt.Dispose()

 

Python 提取PPT文档中的所有图片

一次性将PPT文档中的所有图片提取出来的操作相对比较简单,参考以下步骤:

  1. 通过 LoadFromFile() 方法加载PPT文档
  2. 通过 Presentation.Images 属性获取PPT文档中所有图片的集合
  3. 遍历图片集合,然后使用 IImageData.Image.Save() 方法将每一张图片保存到指定文件路径。

代码:

from spire.presentation.common import *
from spire.presentation import *# 加载PPT文档
ppt = Presentation()
ppt.LoadFromFile("工作汇报.pptx")# 遍历文档中所有图片
for i, image in enumerate(ppt.Images):# 提取图片并保存ImageName = "提取图片/图_"+str(i)+".png"image.Image.Save(ImageName)ppt.Dispose()

 

通过以上示例,可以实现通过编程自动提取PPT中的图片,以便能更好地管理和利用这些视觉资源。


 

 

点击查看更多Python操作PPT文档的示例:Spire.Presentation for Python 中文教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/831867.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级语言程序设计课程第七次个人作业

班级:https://edu.cnblogs.com/campus/fzu/2024C 作业要求:https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400121 姓名:林永庆 12 从左到右,从上到下,从右到左,从下到上345678总结:菜就多练 反思:菜就多练

解线性方程组迭代法

解线性方程组迭代法 在数值分析中,迭代法是解决大规模线性方程组的重要工具。迭代法可以有效地减少计算复杂度,使得求解效率更高。本文将从前置知识开始,介绍向量和矩阵的范数,再深入探讨求解线性方程组的 Jacobi 和 Gauss-Seidel 迭代法。 一、前置知识:向量和矩阵的范数…

Linux kernel 堆溢出利用方法(二)

本文我们通过我们的老朋友heap_bof来讲解Linux kernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kernel off-by-null + docker escape来深入了解这种漏洞的利用手法。前言 本文我们通过我们的老朋友heap_bof来讲解Linux kernel中off-by-null的利用手法。在通…

wpf项目使用winform控件

环境:Win10、VS2017 一、新建WPF项目 2. WPF项目添加System.Windows.Forms和WindowsFormsIntegration引用 3. 编写WPF窗体代码 3.1. 头部添加引用1 xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 2 xmlns:wfi ="clr-namespac…

Spring带泛型的ApplicationEvent无法监听问题分析(转载)

1 背景 在开发过程中,经常遇到发送事件来通知其他模块进行相应的业务处理;笔者实用的是spring自带的ApplicationEventPublisher和EventListener进行事件的发收; 但是开发时遇到一个问题: 如果事件很多,但是事件模式都差不多,就需要定义很多事件类来分别表示各种事件,例如…

PG 修改表结构提示有试图依赖的处理方法

ALTER TABLE victim ALTER COLUMN victim_belong_url TYPE varchar(1000) USING victim_belong_url::varchar(1000); 修改字段长度 通过修改 pg_attribute 基表的方式来绕开这个限制#通过表名查出attrelid SELECT relname, attname,attnum,attrelid,attname FROM pg_class c,pg…

OMV安装文件管理器filebrowser和照片管理photoprism插件时Pull不了镜像的解决办法

OMV安装文件管理器filebrowser和照片管理photoprism插件安装后不能启动服务或者PULL不了镜像卡着不动都是因为现在国内pull不了镜像的原因 这里有个迷惑的人的地方是很多朋友认为是用docker来pull的镜像,于是增加了docker国内加速源后发现OMV还是拉取不了镜像。解决方法如下:…

NOIP2024加赛4

NOIP2024加赛4\(T1\) luogu P11267 【MX-S5-T1】王国边缘 \(85pts\)预处理前缀中最后一个 \(1\) 出现的位置然后就可以倍增跳了。点击查看代码 const ll p=1000000007; int nxt[200010][62],f[200010][62],last[200010]; char t[200010]; ll divide(ll s,ll k) {ll ans=0;for(l…

触想染织厂MES产线终端工位机,打造数字化高效车间

一、行业发展背景在纺织细分领域中,印染行业一直是整个产业链的效率短板,因其涉及染色、定型及后整理加工等多个复杂工艺、上百个参数变量,质量波动较大,依赖个人经验和手工操作,常常陷入高成本、低效率发展困境。△某印染工厂生产场景二、行业应用需求印染厂要真正实现效…

超强抗干扰单键触摸/电容式触控IC-VK3601 SOT23-6单通道直接输出/触摸感应方案原厂

产品品牌:永嘉微电/VINKA 产品型号:VK3601 封装形式:SOT23-6 概述 VK3601具有1个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较 高的集成度,仅需极少的外部组件便可实现触摸按键的检测。 提供了1路直接输出功能。芯片内部采用特殊的集成电路,具有高电源…

重载和重写的区别

重载(Overloading)和重写(Overriding)是面向对象编程中两个重要的概念,它们在实现多态性时起着关键作用,但两者之间有明显的区别:定义上的区别:重载(Overloading) 指的是在同一个类中可以有多个方法名相同,但这些方法的参数列表(参数的个数、类型或顺序)不同,或者…

Python 学习记录 (4)

Plotly常见可视化方案:以鸢尾花数据为例 简单介绍:Ploty库也有大量统计可视化方案,并且这些可视化方案具有交互化属性。 主要对鸢尾花数据进行处理与可视化。 所展示的结果为交互界面的截图情况,这里不能进行交互。使用Plotly绘制散点图与箱型图,分类展示“花萼宽度” 说明…