Python如何将图片插入PowerPoint,并设置图片的宽度和高度?

14

刚接触python-pptx包。 https://python-pptx.readthedocs.io/en/latest/ 想要往幻灯片中插入图片。 如何设置图片的宽度和高度?

我现在有的代码:

from pptx import Presentation 
from pptx.util import Inches

img_path = 'monty-truth.png'

prs = Presentation() 
blank_slide_layout = prs.slide_layouts[6] 
slide = prs.slides.add_slide(blank_slide_layout)

left = top = Inches(1)
pic = slide.shapes.add_picture(img_path, left, top) 
prs.save('test.pptx')
2个回答

17

add_picture的参数如下:

add_picture(image_file, left, top, width=None, height=None)

要设置图片的宽度和高度,只需要定义宽度和高度参数即可。在我的一个项目中,以下设置使得图片高度和位置良好:

pic = slide.shapes.add_picture(img_path, pptx.util.Inches(0.5), pptx.util.Inches(1.75),
                               width=pptx.util.Inches(9), height=pptx.util.Inches(5))

你好。在这里设置宽度的方法是提供宽度和高度的确切测量值。我们有没有办法采用PowerPoint UI的方式,以保持图像比例/纵横比不变的情况下将大小增加到一定百分比? - Meet
此外,每当我们使用python-pptx创建幻灯片时,它都会以4:3的旧样式创建。即使我们将比例更改为16:9,它仍然不会更改布局文件中所有其他对象的尺寸。它们仍然保持在4:3。相反,如果我们在PowerPoint中手动更改幻灯片大小为16:9,则所有布局文件也会自动更新。我们能否使用python-pptx做类似的事情? - Meet

6
似乎那个细节在文档中丢失了,Lisa,很高兴你指出了这一点。
width和height不在示例中显示的原因是它们是可选的。如果未提供,则图片以其“本机”(全尺寸)大小插入。
更常见的情况是只提供其中之一,然后python-pptx会为您进行数学计算,使未指定的尺寸保持纵横比。所以如果您有一个大图片,比如4 x 5英寸,并想将其缩小到1英寸宽,可以调用:
from pptx.util import Inches

pic = shapes.add_picture(image_path, left, top, Inches(1))

并且图片将以1 x 1.25的尺寸呈现(在这种情况下),而不需要您确切地了解原始尺寸。保持长宽比可以防止图片看起来“拉伸”,如果您将其设置为1 x 1英寸,就会出现这种情况。

同样的方法也适用于仅指定高度的情况,如果您知道要显示的高度并且不想麻烦地计算出相应的宽度。

如果同时指定宽度和高度,则会得到指定的尺寸,即使这意味着图像在此过程中被扭曲。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接