Python вставляет картинки в PowerPoint, как установить ширину и высоту картинки?

Новое в пакете python-pptx. https://python-pptx.readthedocs.io/en/latest/ Хотите вставить изображения в PowerPoint. Как я могу установить ширину и высоту картинки?

Код у меня сейчас:

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 ответа

Решение

Параметры 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))

Похоже, детали Лизы как-то выпали из документации, я рада, что вы на это указали.

Ширина и высота не указаны в примере, потому что они являются необязательными. Если не указано иное, изображение вставляется в "родном" (полном) размере.

Что может быть более распространенным, так это предоставить только один из этих двух, а затем 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 х 1 дюйм.

То же самое работает только с указанием высоты, если вы знаете, какой высоты вы хотите, чтобы она отображалась, и не хотите суетиться с разработкой пропорциональной ширины.

Если вы укажете ширину и высоту, это будет размер, который вы получите, даже если это означает, что изображение в процессе искажается.

Другие вопросы по тегам