gpt4 book ai didi

python - 使用Python pptx获取图像文件名

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:50 24 4
gpt4 key购买 nike

我正在尝试编写一个脚本来打开用户指定的 ppt、读取它并查找图像文件名。我使用 python pptx 包,因为这可以让我真正打开 ppt 文件。我试图浏览每张幻灯片并检查该幻灯片上的图像,但我不知道如何使用 pptx 包执行此操作,而且在我看来,文档对此也不是很清楚。

因此,在深入研究文档后,我发现这种方法可以完成工作:

file = open(fileName, 'rb')
ppt = Presentation(file)
images = []

for slide in ppt.slides:
for shape in slide.shapes:
print(shape.image)
if shape.image:
if isCorrectImageType(shape.image):
print(shape.image.filename)
file.close()

def isCorrectImageType(imageShape):
imgExtension = imageShape.content_type
filePattern = '(.jpg$|.jpeg$|.png$|.gif$)'
image = re.search(filePattern, imgExtension)
print(image.group(0))

return image.group(0)

这可以工作,但是它不会返回正确的文件名。它返回 image.png,而文件名是 myfile.png

最佳答案

如果图像是从文件插入的,则图像文件名仅存储在 XML 中。如果图像是从二进制流导入的(通过诸如 python-pptx 之类的程序),则没有可用的文件名,因此会使用 image.{ext} 形式。使用 PowerPoint 将图像粘贴到位时也会出现这种情况。

因此文件名不一定总是可用。

但是,当它被记录后,它可以在图片形状的 descr 属性中找到:

from pptx.enum.shapes import MSO_SHAPE_TYPE

for shape in slide.shapes:
if shape.shape_type != MSO_SHAPE_TYPE.PICTURE:
continue
picture = shape
print(picture._pic.nvPicPr.cNvPr.get('descr'))

此代码访问如下所示的 XML:

<p:pic>
<p:nvPicPr>
<p:cNvPr id="6" name="Picture 5" descr="python-logo.gif"/>
<p:cNvPicPr/>
<p:nvPr/>
</p:nvPicPr>
...

并且应该返回值'python-logo.gif'

关于python - 使用Python pptx获取图像文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46463861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com