python程序24:批量导入图片至一个PPT文件

有时候一个在做PPT的时候,可能需要很多的图片导入到文件中,那么怎么做才能准确又高效呢?今天我们写一个python用于批量导入图片至每一页PPT中,并填充图片自动匹配纵横比。

这里需要引入模块:pip install python-pptx pillow

python-pptx 是一个用于创建和更新 PowerPoint (.pptx) 文件的 Python 库。我们可以使用 Python 代码自动化 PowerPoint 文件的创建和编辑过程,这对于需要大量生成 PowerPoint 报告的数据科学家、研究人员和企业用户非常有用。python-pptx 提供了一组 API,使您可以创建幻灯片、添加文本、图像、表格和图表等内容,还可以设置字体、颜色、大小等格式。

以下是程序源码:

from pptx import Presentation
from PIL import Image
import os

def create_slideshow(images_folder):
prs = Presentation()

# 获取文件夹中的所有图片文件
image_files = [file for file in os.listdir(images_folder) if file.endswith(('.jpg', '.jpeg', '.png'))]

for image_file in image_files:
# 打开图片并获取其宽度和高度
image_path = os.path.join(images_folder, image_file)
image = Image.open(image_path)
width, height = image.size

# 计算图片在幻灯片上的大小和位置
slide_width = prs.slide_width
slide_height = prs.slide_height
slide_ratio = slide_width / slide_height
image_ratio = width / height

if slide_ratio > image_ratio:
# 在幻灯片上添加带有黑色边框的图片
left = (slide_width - slide_height * image_ratio) / 2
top = 0
prs.slides.add_slide(prs.slide_layouts[1])
slide = prs.slides[-1]
slide.shapes.add_picture(image_path, left, top, slide_height * image_ratio, slide_height)
else:
# 在幻灯片上添加带有黑色边框的图片
left = 0
top = (slide_height - slide_width / image_ratio) / 2
prs.slides.add_slide(prs.slide_layouts[1])
slide = prs.slides[-1]
slide.shapes.add_picture(image_path, left, top, slide_width, slide_width / image_ratio)

# 保存幻灯片为PPT文件
prs.save('ppt.pptx')

# 传入存储图片的文件夹路径
create_slideshow(r'C:\Users\Administrator\Pictures\img')

注意最后在引入图片路径的时候create_slideshow(r'C:\Users\Administrator\Pictures\img'),直接引用会出现SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape,报错,是因为直接引用路径导致的,即在字符串中使用了反斜杠\,但是反斜杠后面的字符不是一个合法的转义序列引起的。这个错误可以通过以下几种方法解决:

  • 使用双反斜杠\代替单个反斜杠\。例如,将路径C:\Users\username\folder改为C:\Users\username\folder。
  • 在字符串前面加上字母r,表示使用原始字符串。例如,将路径C:\Users\username\folder改为r’C:\Users\username\folder’。
  • 使用正斜杠/代替反斜杠\。例如,将路径C:\Users\username\folder改为C:/Users/username/folder。

这样才不会报错。下面这是图片路径:

运行程序后直接生成了一个ppt.pptx的文件,我们打开看一下效果:

可以看到,图片在每一页都占满了页面高度,并在极短的时间内生成了文件,这样就不用手动调节了,对于一些PPT的重度用户来说真的很省心省力。

发表回复