操作 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 天的临时许可证。