使用 python-pptx 提取自选图形的背景图像

Extract Background Image of an AutoShape with python-pptx

我正在尝试使用 python-pptx 从 PPTX 文件中提取所有图像。我成功地对具有图片样式的形状的图像执行了此操作:

shape.shape_type == MSO_SHAPE_TYPE.PICTURE

但我正在努力提取已添加到幻灯片中的图像,方法是将它们设置为自动形状中的背景图像

shape.shape_type == MSO_SHAPE_TYPE.AUTO_SHAPE

有没有什么方法可以从自选图形中提取背景图像,或者这根本不可能通过 API?

遗憾的是,目前无法通过 API 实现。您必须转到底层 XML 以获得看起来像 blipFill 或类似的元素,并使用它必须到达相关图像的 rId

您可以使用以下方法检查形状的 XML:

print(shape._sp.xml)

然后您可以使用 XPath 获取 rId 值:

rId = shape._sp.xpath({xpath expr to rId attr})[0]

获得 rId 值后,您可以使用以下方法获取对 ImagePart 的引用:

image_part = slide.part.related_part(rId)

一旦你有了图像部分,我希望你知道该怎么做,得到类似 image_part.image 的东西:https://github.com/scanny/python-pptx/blob/master/pptx/parts/image.py#L21