当前位置: 首页 > news >正文

如何用Python向PPT中批量插入图片

办公自动化办公中,Python最大的优势是可以批量操作,省去了用户粘贴、复制、插入等繁琐的操作。经常做PPT的朋友都知道,把图片插入到PPT当中的固定位置是一个非常繁琐的操作,往往调整图片时耗费大量的时间和精力。如何能省时省力插入图片呢?今天我们来一起探索一下批量插入图片到PPT的三种办法。

一、手工操作

在WPS幻灯片中,通过插入——分页插图——再选择要插入的图片,就可以批量把图片插入到PPT当中,不过此时插入的位置默认是PPT的中间位置,就是说无法按照指定的位置插入。

最后的效果如下,每张图片都会居中显示:

二、用python-pptx模块

如果用Python的话,就可以批量插入,而且可以插入指定位置,这样可以大大节省插入的时间。

实现的过程也很简单,主要是导入指定模块,利用os来遍历所有的图片,然后创建ppt对象,插入空白的slide,然后通过循环的办法把图片插入到幻灯片中。根据图片距离左、上、高度来最终确定其位置。

from pptx import Presentation
from pptx.util import Inches
import os# 获取当前目录下所有的png文件
pics = [file for file in os.listdir(".") if file.endswith(".png")]# 创建一个演示文稿对象
prs = Presentation()for pic in pics:# 添加一张新幻灯片slide_layout = prs.slide_layouts[5]  # 使用空白布局slide = prs.slides.add_slide(slide_layout)# 添加图片到幻灯片img_path = picleft = Inches(5.8)top = Inches(2)height = Inches(3.5)slide.shapes.add_picture(img_path, left, top, height=height)# 保存演示文稿
prs.save('add-image-in-presentation.pptx')

广告

三、利用Aspose.slides这个模块

Aspose模块的办法和python-pptx的类似。过程也是首先遍历得到图片的地址,然后创建PPT对象,通过添加空白slide,把图片插入的办法来实现。

import aspose.slides as slides
import os
pics = [file for file in os.listdir(".") if file.endswith(".png")]# 创建演示文稿
with slides.Presentation() as pres:# 访问第一张幻灯片for num,pic in enumerate(pics,0):slide = pres.slides.add_empty_slide(pres.layout_slides[0])# 从文件加载图像with open(pic, "rb") as in_file:# 将图像添加到演示文稿的图像集image = pres.images.add_image(in_file)# 将图像添加到幻灯片slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 20, 20, 100, 100, image)# 保存演示文稿pres.save("add-image-in-presentation.pptx", slides.export.SaveFormat.PPTX)

slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 20, 20, 100, 100, image)这行代码中,前2个数是是图片距离左侧和右侧的距离。

四、学后总结

  1. 经过实验Python-pptx这个模块插入图片的速度更快,因此建议使用第二种方法。
  2. Aspose.slides这个模块比较大,而且是收费的,如果是免费的生成的PPT中有水印,还要去除才可以。
http://www.lryc.cn/news/393284.html

相关文章:

  • C# Socket
  • node的下载、安装、配置和使用(node.js下载安装和配置、npm命令汇总、cnpm的使用)
  • 深度卷积神经网络 AlexNet
  • 【刷题汇总--大数加法、 链表相加(二)、大数乘法】
  • 基于Java的网上花店系统
  • uniApp 封装VUEX
  • 最长公共子序列求长度和输出子序列C代码
  • 安卓Framework开发快速分析日志及定位源码
  • 数据结构算法之B树
  • 【图卷积网络】GCN基础原理简单python实现
  • 【话题】AI是在帮助开发者还是取代他们
  • 精通Perl正则表达式修饰符:提升文本处理能力的艺术
  • 【web前端HTML+CSS+JS】--- HTML学习笔记01
  • Go 语言入门(一)
  • 爬虫笔记20——票星球抢票脚本的实现
  • DDR3(三)
  • JDK都出到20多了,你还不会使用JDK8的Stream流写代码吗?
  • QT slots 函数
  • pycharm如何使用jupyter
  • 机器学习——无监督学习(k-means算法)
  • 强化学习-6 DDPG、PPO、SAC算法
  • vue3实现多表头列表el-table,拖拽,鼠标滑轮滚动条优化
  • Micron近期发布了32Gb DDR5 DRAM
  • SQL Server时间转换
  • kubernetes集群部署:node节点部署和CRI-O运行时安装(三)
  • 03:Spring MVC
  • 玩转springboot之springboot注册servlet
  • 推荐好玩的工具之OhMyPosh使用
  • pydub、ffmpeg 音频文件声道选择转换、采样率更改
  • 0803实操-Windows Server系统管理