Как добавить два или более изображения в один слайд для l oop python -pptx - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь добавить изображения в один слайд, используя пакет python pptx.

Как добавить два изображения в один слайд в python pptx

Но у меня возникают трудности, когда я делаю это в цикле for;

скажем, у нас есть куча картинок в каталоге, и мы хотим изменить размер и добавить текущий слайд, когда мы go вместе с Картинки в каталоге. Когда у меня есть eagle или hawk в каталоге, измените их размер, поместите их в текущий слайд и переместите следующий!

Я получаю, что каждое изображение на разных слайдах;

Вот мой код выглядит так:

from pptx import Presentation
from pptx.util import Inches
from pptx.util import Inches

img_path = 'r/D/test'

eagle_1.png, eagle_2.png .... eagle_5.png

hawk_1.png, hawk_2.png .... hawk_5.png


def ppt_generator(img_path):

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

    for images in glob.glob(img_path + '/*.png'):


        if 'eagle' in str(images):
            slide = prs.slides.add_slide(content_slide_layout)   
            slide = slide.shapes.add_picture(images , left=Inches(0), top=Inches(0), width=Inches(3), height = Inches(3))

        if 'hawk' in str(images):
            slide = prs.slides.add_slide(content_slide_layout)   
            slide = slide.shapes.add_picture(images , left=Inches(2), top=Inches(2), width=Inches(3), height = Inches(3))

    prs.save('eagle_hawk.pptx') 

Я хочу, чтобы все eagle_1 и hawk_1 были на одном слайде и т. Д.

Как я могу это сделать? сделай это?

1 Ответ

1 голос
/ 30 января 2020

Один из подходов - собрать пары изображений орел / ястреб в отдельной функции. Может быть что-то вроде:

def iter_image_pairs():
    eagles, hawks = [], []
    for image_path in glob.glob(img_path + '/*.png'):
        if "eagle" in image_path:
            eagles.append(image_path)
        elif "hawk" in image_path:
            hawks.append(image_path)
    for pair in zip(eagles, hawks):
        yield pair

Тогда ваш слайд l oop может просто стать:

for eagle, hawk in iter_image_pairs():
    slide = prs.slides.add_slide(content_slide_layout)   
    slide.shapes.add_picture(
        eagle, left=Inches(0), top=Inches(0), width=Inches(3), height=Inches(3)
    )
    slide.shapes.add_picture(
        hawk, left=Inches(2), top=Inches(2), width=Inches(3), height=Inches(3)
    )
...