我正在尝试使用python-pptx
读取.pptx文件。我设法从演示文稿中获得了除图像以外的所有内容。下面是我用来识别演示文稿中文本框以外的图像的代码。识别后,我将auto_shape_type
设为RECTANGLE (1)
,但图像却一无所获。
from pptx import Presentation
from pptx.shapes.picture import Picture
def read_ppt(file):
prs = Presentation(file)
for slide_no, slide in enumerate(prs.slides):
for shape in slide.shapes:
if not shape.has_text_frame:
print(shape.auto_shape_type)
任何帮助您理解此问题的帮助。也欢迎其他选择。
答案 0 :(得分:2)
尝试查询shape.shape_type
。默认情况下,auto_shape_type
会返回您观察到的矩形,尽管图片也可以插入其他形状并由其他形状遮盖。
请注意,新插入图片的默认值为
MSO_AUTO_SHAPE_TYPE.RECTANGLE
,由于矩形的范围与图片的范围完全对应,因此不会进行裁剪。
shape_type
应该返回:
标识此形状类型的唯一整数,在这种情况下无条件地
MSO_SHAPE_TYPE.PICTURE
。
您可以通过使用图像的blob
属性并将其写出二进制文件来将图像内容提取到文件中:
from pptx import Presentation
pres = Presentation('ppt_image.pptx')
slide = pres.slides[0]
shape = slide.shapes[0]
image = shape.image
blob = image.blob
ext = image.ext
with open(f'image.{ext}', 'wb') as file:
file.write(blob)