请选择 进入手机版 | 继续访问电脑版
点击联系客服
客服QQ: 客服微信:
查看: 78|回复: 50

python从PPT中提取图片

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-9-30 07:42:33 | 显示全部楼层 |阅读模式
一、前言

今天要带大家去的是PPT照片提取。在我们的研究中,PPT的使用仍然非常频繁,但自己制作PPT很麻烦,所以要使用别人的模板或材料。这时提取PPT照片可以减少我们的很多工作。

二、实现原理

事实上,实现原理很简单。我们的pptx文件实际上是压缩包。您可以直接修改Pptx文件的后缀,更改为zip,然后解压缩。例如:





这是解压后的文件。我们可以在PPT目录下找到媒体目录,这就是我们想要的图片。(阿尔伯特爱因斯坦,Northern  Exposure(美国电视),这个目录包含了PPT的所有多媒体文件。

知道这一点后,您可以将PPT的媒体目录解压缩到Python中,提取所有照片。

三、提取PPT中的图片

1、打开压缩包

为了处理压缩包文件,python中提供了zipfile模块。让我们来看看简单的工作。

From  zipfile  import  ZipFile

#打开压缩文件

F=ZipFile('test.pptx  ')

#查看压缩包中的所有文件

For  file  in  f.namelist():

打印(文件)

#关闭压缩的软件包文件

F.close()

输出的一部分如下:

[Content_Types]
en punctuation">].xml
_rels/.rels
ppt/presentation.xml
ppt/slides/_rels/slide2.xml.rels
ppt/slides/slide1.xml
ppt/slides/slide2.xml
ppt/slides/slide3.xml

可以看到我们打印出了压缩包的文件。

2、解压文件
我们还可以通过下面的方式打开压缩包:

from zipfile import ZipFile
with ZipFile("test.pptx") as f:
    for file in f.namelist():
        print(file)

通过with语句,就可以不显示地调用close方法。下面我们看看解压操作:

from zipfile import ZipFile
with ZipFile("test.pptx") as f:
    for file in f.namelist():
        # 解压文件
        f.extract(file, path="unzip")

解压文件的操作通过f.extract来实现,这里传入了两个参数,分别是压缩包文件,和解压路径,如果压缩包有密码还需要传入解压密码。

然后我们还需要判断一下,如果是媒体目录我们才解压。我们添加一点代码:

from zipfile import ZipFile
with ZipFile("test.pptx") as f:
    for file in f.namelist():
        # 如果是media目录下的文件就解压
        if file.startswith("ppt/media/"):
            f.extract(file, path="unzip")

这样我们就实现了PPT图片的提取。

四、提取PPT中的图片
我们把上面代码再完善一下:

import os
from zipfile import ZipFile
# 解压目录
unzip_path = "unzip"
# 如果解压目录不存在则创建
if not os.path.exists(unzip_path):
    os.mkdir(unzip_path)
with ZipFile("test1/test.pptx") as f:
    for file in f.namelist():
        if file.startswith("ppt/media/"):
            f.extract(file, path=unzip_path)

这里我们就是添加了一个解压目录的创建,这样我们执行的时候就不会因为目录不存在而报错了。

另外,其实我们手动解压然后提取PPT中的图片也是很方便的,也并不会比程序慢。
回复

使用道具 举报

1

主题

384

帖子

-174

积分

限制会员

积分
-174
发表于 2021-9-30 07:53:03 | 显示全部楼层
帮帮顶顶!!
回复

使用道具 举报

0

主题

392

帖子

-165

积分

限制会员

积分
-165
发表于 2021-9-30 08:19:32 | 显示全部楼层
LZ说的很不错
回复

使用道具 举报

1

主题

358

帖子

-127

积分

限制会员

积分
-127
发表于 2021-9-30 08:41:27 | 显示全部楼层
前排支持下
回复

使用道具 举报

0

主题

381

帖子

-169

积分

限制会员

积分
-169
发表于 2021-9-30 09:04:45 | 显示全部楼层
不错,支持下楼主
回复

使用道具 举报

0

主题

376

帖子

-138

积分

限制会员

积分
-138
发表于 2021-9-30 09:46:43 | 显示全部楼层
LZ真是人才
回复

使用道具 举报

1

主题

345

帖子

-99

积分

限制会员

积分
-99
发表于 2021-9-30 10:18:18 | 显示全部楼层
路过,支持一下啦
回复

使用道具 举报

1

主题

373

帖子

-118

积分

限制会员

积分
-118
发表于 2021-9-30 10:39:55 | 显示全部楼层
LZ真是人才
回复

使用道具 举报

0

主题

351

帖子

-141

积分

限制会员

积分
-141
发表于 2021-9-30 11:01:39 | 显示全部楼层
没看完~~~~~~ 先顶,好同志
回复

使用道具 举报

1

主题

375

帖子

-189

积分

限制会员

积分
-189
发表于 2021-9-30 11:30:22 | 显示全部楼层
学习了,谢谢分享、、、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|汕头@IT精英团

Powered by Discuz! X3.4 © 2021 Comsenz Inc.

GMT+8, 2021-10-25 02:02 , Processed in 0.265201 second(s), 19 queries .

快速回复 返回顶部 返回列表