python - 如何在for循环python-pptx中将两个或多个图像添加到同一张幻灯片
问题描述
我正在尝试使用 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)
)
推荐阅读
- amazon-web-services - 如何从 EventBridge 规则中定义阶跃函数执行名称?
- python - 如何使用服务帐户将共享谷歌驱动器中的文件移动到垃圾箱
- java - 在 Amazon S3 存储桶上上传文件时出现 NoSuchMethoError
- docker - Azerothcore - Docker .env MySQL-密码不起作用
- reactjs - WebStorm 中的 Redux-toolkit 操作参数
- c++ - 使用 Catch2 时未解决的外部符号错误
- jenkins - 如何使用 jenkins 变量作为执行命令
- javascript - 使用 Javascript 从 JSON 响应中获取 HTML 标记值
- recharts - 如何在 Rechart 中计算自定义 CartesianGrid 的线条。如何重新映射到正确的域
- javascript - 在 JavaScript 中制作动态文本