操作 powerpoint 中的图片一般是我们在插入图片后的必要步骤,调整图片位置、大小、透明度、标题、旋转角度来满足我们的需求;同时,我们有时对不满意的图片会替换或者删除,在本文中,我们将解释如何使用 spire.presentation for python 在 python 中编辑 powerpoint 演示文稿中图片以及替换或者删除图片。
安装 spire.presentation for python
本教程需要用到 spire.presentation for python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 windows 中。
pip install spire.presentation
如果您不确定如何安装,请参考此教程: 如何在 windows 中安装 spire.presentation for python
python 编辑 powerpoint 演示文稿中图片
spire.presentation for python 提供了 iembedimage 类用于处理图片,包括调整图片的高、宽、旋转角度、位置等等,具体步骤如下:
- 创建 presentation 类的对象。
- 使用 presentation.loadfromfile() 方法加载一个 powerpoint 演示文稿。
- 使用 for 循环来遍历文档中的所有幻灯片以及遍历每张幻灯片上的所有形状。
- 在循环内部使用 if 语句判断当前形状是否是 iembedimage 类型(图片),如果是图片,就进行类型转换(shape 转为 iembedimage),然后调用 iembedimage 相关方法来设置相关属性。
- 使用 iembedimage.width、iembedimage.height 来设置图片的宽、高。
- 使用 iembedimage.rotation 来设置图片旋转角度。
- 使用 iembedimage.name 来设置图片名称。
- 使用 iembedimage.alternativetext 来设置图片的“可替代文本”。
- 使用 iembedimage.alternativetitle 来设置图片的“可替代标题”。
- 使用 iembedimage.left、iembedimage.top 来设置图片的位置(与幻灯片上边和左边的距离)。
- 使用 iembedimage.picturefill.picture.transparency 来设置图片的透明度。
- 使用 presentation.savetofile() 方法保存结果演示文稿。
- python
from spire.presentation.common import *
from spire.presentation import *
# 定义输入文件名,即包含图片的ppt文件
inputfile = "input.pptx"
# 定义输出文件名,即修改后的图片尺寸的ppt文件
outputfile = "output.pptx"
# 创建一个presentation对象,用于操作ppt文件
presentation = presentation()
# 从指定的文件中加载ppt内容
presentation.loadfromfile(inputfile)
# 遍历ppt中的每一张幻灯片
for slide in presentation.slides:
# 遍历幻灯片中的每个形状
for shape in slide.shapes:
# 检查当前形状是否为嵌入图片类型
if isinstance(shape, iembedimage):
# 如果是图片,则进行相应的处理
image = shape if isinstance(shape, iembedimage) else none
# 将图片宽度和高度按照缩放比例进行调整
image.width = image.width * 0.5
image.height = image.height * 0.5
# 设置图片旋转角度为45度
image.rotation = 45
# 设置图片的名称为“测试图片”
image.name = "测试图片"
# 设置图片的替代文本为“原始图片”
image.alternativetext = "原始图片"
# 设置图片的替代标题为“标题1”
image.alternativetitle = "标题1"
# 设置图片的位置(左上角坐标)为(50, 50)
image.left = 50
image.top = 150
# 设置图片填充透明度为50%
image.picturefill.picture.transparency = 50
# 将修改后的ppt内容保存到指定的输出文件中,使用pptx2013格式
presentation.savetofile(outputfile, fileformat.pptx2013)
# 释放presentation对象的资源
presentation.dispose()
替换 powerpoint 演示文稿中特定的图片
实现该功能需要首先获取到指定幻灯片,然后遍历幻灯片中所有形状,找出形状中的图片类型,接着判断该图片的“替代标题(alternativetitle)”是不是“image1”,如果是,那么这就是我们需要进行替换的目标图片,使用 slidepicture.picturefill.picture.embedimage 来重新指定图片源以实现替换原图片。具体步骤如下:
- 创建 presentation 类的对象。
- 使用 presentation.loadfromfile() 方法加载一个 powerpoint 演示文稿。
- 通过 presentation.slides[index] 属性获取特定幻灯片(根据索引)。
- 使用 presentation.images.appendstream() 方法加载图片数据。
- 使用 for 循环来遍历指定幻灯片上的所有形状。
- 在循环内部使用 if 语句判断当前形状是否是 slidepicture 类型(图片),如果是图片就进行类型转换(shape 转为 slidepicture),然后调用 slidepicture.picturefill.picture.embedimage 来来重新指定图片源。
- 使用 presentation.savetofile() 方法保存结果演示文稿。
- python
from spire.presentation.common import *
from spire.presentation import *
# 定义输入文件名,即要处理的ppt文件
inputfile = "input.pptx"
# 定义输出文件名,即处理后的结果保存的文件名
outputfile = "output.pptx"
# 创建一个presentation对象,用于操作ppt文件
ppt = presentation()
# 从指定的文件中加载ppt内容
ppt.loadfromfile(inputfile)
# 获取ppt的第一张幻灯片
slide = ppt.slides[0]
# 创建一个stream对象,用于读取图片文件
stream = stream("icebluelogo.png")
# 将图片添加到ppt的图片集合中,并获取图片对象
image = ppt.images.appendstream(stream)
# 关闭stream对象
stream.close()
# 遍历幻灯片中的所有形状
for shape in slide.shapes:
# 判断当前形状是否为幻灯片中的图片
if isinstance(shape, slidepicture):
# 如果图片的替代标题是"image1"
if shape.alternativetitle == "image1":
# 更新图片填充的图片为新添加的图片
(shape if isinstance(shape, slidepicture) else none).picturefill.picture.embedimage = image
# 将处理后的ppt内容保存到指定的输出文件中,使用pptx2013格式
ppt.savetofile(outputfile, fileformat.pptx2013)
# 释放presentation对象的资源
ppt.dispose()
删除 powerpoint 中特定幻灯片中所有图片
实现该功能需要首先获取到指定幻灯片,然后遍历幻灯片中所有形状,找出形状中的图片类型,接着通过 islide.shapes.remove(index) 来删除图片,具体步骤如下:
- 创建 presentation 类的对象。
- 使用 presentation.loadfromfile() 方法加载一个 powerpoint 演示文稿。
- 通过 presentation.slides[index] 属性获取特定幻灯片(根据索引)。
- 使用 for 循环来遍历指定幻灯片上的所有形状,从最后一个形状往前遍历。
- 在循环内部使用 if 语句判断当前形状是否是 slidepicture 类型(图片),如果是,就使用 islide.shapes.remove(index) 来删除图片。
- 使用 presentation.savetofile() 方法保存结果演示文稿。
- python
from spire.presentation.common import *
from spire.presentation import *
# 定义输入文件名,即要处理的ppt文件
inputfile = "input.pptx"
# 定义输出文件名,即处理后的结果保存的文件名
outputfile = "output.pptx"
# 创建一个presentation对象,用于操作ppt文件
ppt = presentation()
# 从指定的文件中加载ppt内容
ppt.loadfromfile(inputfile)
# 获取ppt的第一张幻灯片
slide = ppt.slides[0]
# 遍历幻灯片中的所有形状,从最后一个开始往前遍历
for i in range(slide.shapes.count - 1, -1, -1):
# 判断当前形状是否为图片(slidepicture)
if isinstance(slide.shapes[i], slidepicture):
# 如果是图片,则从幻灯片中移除该形状
slide.shapes.removeat(i)
# 将处理后的ppt内容保存到指定的输出文件中,使用pptx2013格式
ppt.savetofile(outputfile, fileformat.pptx2013)
# 释放presentation对象的资源
ppt.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。