我正在尝试使用python pptx包将图像添加到一张幻灯片中。
How to add two images to one slide in python pptx
但是我在for循环中执行此操作时遇到困难;
假设我们在目录中有一堆图片,并且我们希望在与目录中的图片一起调整大小并添加当前幻灯片。当我在目录中有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应该在同一张幻灯片中,依此类推!
我怎样才能做到这一点?
最佳答案
一种方法是在单独的功能中组合鹰/鹰图片对。也许像这样:
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
然后,您的幻灯片循环就可以变成:
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)
)
关于python - 如何在for循环python-pptx中的同一张幻灯片中添加两个或更多图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59977855/