如何通过C#/VB.NET从PowerPoint文档中提取图片
PowerPoint是用于制作幻灯片(演示文稿)的应用软件,每张幻灯片中都可以包含文字、图形、图形、表格、声音和影像等多种信息。有时候我们发现在PPT里面有一些精美的图片,或者其他原因想要把PPT里面的图片保存下来。但如果PowerPoint文档中包含大量图片,一张张保存未免太费时间及精力。那有什么办法可以高效便捷地提取出PPT中的图片呢?在这篇文章中,您将学习如何以编程方式从PowerPoint文档中提取图片。下面是我整理的步骤及方法,并附上C#/VB.NET代码供大家参考。
- 从整个演示文稿中提取图像
- 从特定演示幻灯片中提取图像
程序环境:
本次测试时,在程序中引入 Free Spire.Presentation.dll 文件。
方法1:
将Free Spire.Presentation for .NET下载到本地,解压,找到 BIN 文件夹下的 Spire.Presentation.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。
方法2::
通过 NuGet安装。可通过以下 2 种方法安装:
1. 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.Presentation”,点击“安装”。等待程序安装完成。
2. 将以下内容复制到 PM 控制台安装。
Install-Package FreeSpire.Presentation -Version 7.8
从整个演示文稿中提取图像
- 初始化 Presentation 类的一个实例。
- 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 演示文稿。
- 通过 Presentation.Images 属性获取演示文稿中所有图片的集合。
- 遍历集合,调用ImageCollection[int].Image.Save()方法将集合中的图片保存到图片文件中。
完整代码
C#
using Spire.Presentation;
using Spire.Presentation.Collections;
using System.Drawing; namespace ExtractImagesFromPresentation
{
internal class Program
{
static void Main(string[] args)
{
//初始化Presentation类的实例
Presentation ppt = new Presentation(); //加载PowerPoint演示文稿
ppt.LoadFromFile("示例文档.pptx"); //获取演示文稿的图像集
ImageCollection imageCollection = ppt.Images; //遍历集合中的图像
for (int i = 0; i < imageCollection.Count; i++)
{
//提取图像
imageCollection[i].Image.Save(string.Format("Presentation\\图片{0}.png", i));
} ppt.Dispose();
}
}
}
VB.NET
Imports Spire.Presentation
Imports Spire.Presentation.Collections Namespace ExtractImagesFromPresentation
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'初始化Presentation类的实例
Dim ppt As Presentation = New Presentation() '加载PowerPoint演示文稿
ppt.LoadFromFile("示例文档.pptx") '获取演示文稿的图像集
Dim imageCollection As ImageCollection = ppt.Images '遍历集合中的图像
For i As Integer = 0 To imageCollection.Count - 1
'提取图像
imageCollection(i).Image.Save(String.Format("Presentation\图片{0}.png", i))
Next ppt.Dispose()
End Sub
End Class
End Namespace
效果图

从特定演示幻灯片中提取图像
- 初始化 Presentation 类的一个实例。
- 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 演示文稿。
- 通过 Presentation.Slides[int] 属性按索引获取特定幻灯片。
- 遍历幻灯片上的所有形状。
- 检查形状是否为 SlidePicture 或 PictureShape 类型。 如果结果为真,则使用 SlidePicture.PictureFill.Picture.EmbedImage.Image.Save()或 PictureShape.EmbedImage.Image.Save() 方法将图像保存到图像文件。
完整代码
C#
using Spire.Presentation; namespace ExtractImagesFromSlide
{
internal class Program
{
static void Main(string[] args)
{
//初始化 Presentation 类的一个实例
Presentation ppt = new Presentation();
//加载 PowerPoint 演示文稿
ppt.LoadFromFile("示例文档.pptx"); //获取指定幻灯片
ISlide slide = ppt.Slides[1]; int i = 0;
//遍历指定幻灯片上的所有形状
foreach (IShape s in slide.Shapes)
{
//检查形状是否为SlidePicture类型
if (s is SlidePicture)
{
//提取图像
SlidePicture ps = s as SlidePicture;
ps.PictureFill.Picture.EmbedImage.Image.Save(string.Format(@"D:\.NET\提取图片\bin\Debug\Slide\图像{0}.png", i));
i++;
}
//检查形状是否为 PictureShape 类型
if (s is PictureShape)
{
//提取图像
PictureShape ps = s as PictureShape;
ps.EmbedImage.Image.Save(string.Format(@"D:\.NET\提取图片\bin\Debug\Slide\图像{0}.png", i));
i++;
}
}
}
}
}
VB.NET
Imports Spire.Presentation Namespace ExtractImagesFromSlide
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'初始化 Presentation 类的一个实例
Dim ppt As Presentation = New Presentation()
'加载 PowerPoint 演示文稿
ppt.LoadFromFile("示例文档.pptx") '获取指定幻灯片
Dim slide As ISlide = ppt.Slides(1) Dim i = 0
'遍历指定幻灯片上的所有形状
For Each s As IShape In slide.Shapes
'检查形状是否为SlidePicture类型
If TypeOf s Is SlidePicture Then
'提取图像
Dim ps As SlidePicture = TryCast(s, SlidePicture)
ps.PictureFill.Picture.EmbedImage.Image.Save(String.Format("D:\.NET\提取图片\bin\Debug\Slide\图像{0}.png", i))
i += 1
End If
'检查形状是否为 PictureShape 类型
If TypeOf s Is PictureShape Then
'提取图像
Dim ps As PictureShape = TryCast(s, PictureShape)
ps.EmbedImage.Image.Save(String.Format("D:\.NET\提取图片\bin\Debug\Slide\图像{0}.png", i))
i += 1
End If
Next
End Sub
End Class
End Namespace
效果图

—本文完—
如何通过C#/VB.NET从PowerPoint文档中提取图片的更多相关文章
- C# 提取Word文档中的图片
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
- 如何使用免费PDF控件从PDF文档中提取文本和图片
如何使用免费PDF控件从PDF文档中提取文本和图片 概要 现在手头的项目有一个需求是从PDF文档中提取文本和图片,我以前也使用过像iTextSharp, PDFBox 这些免费的PD ...
- 在LaTeX文档中插入图片的几种常用的方法
LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件. 在LaTeX文档中插入图片 ...
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)(转)
对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...
- 【python】使用HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
一.从HTML文档中提取链接 模块HTMLParser,该模块使我们能够根据HTML文档中的标签来简洁.高效地解析HTML文档. 处理HTML文档的时候,我们常常需要从其中提取出所有的链接.使用HTM ...
- Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...
- 利用java从docx文档中提取文本内容
利用java从docx文档中提取文本内容 使用Apache的第三方jar包,地址为https://poi.apache.org/ docx文档内容如图: 目录结构: 每个文件夹的名称为日期加上来源,例 ...
- C#/VB.NET 向PowerPoint文档插入视频
如今,Microsoft Office PowerPoint在我们日常生活中的应用已经很广泛了,利用Microsoft Office PowerPoint不仅可以创建演示文稿,还可以在互联网上召开面对 ...
- C#/VB.NET 在Word文档中插入分页符
分页符是分页的一种符号,上一页结束以及下一页开始的位置.通查用于在指定位置强制分页.本文将分为两部分来介绍如何在Word文档中插入分页符.并附上C#/VB.NET以供参考,详情请阅读以下内容. 在特定 ...
- 【.net 深呼吸】导出 Office 文档中的图片
我们常用的 Office 文档其实就三种——Word.Excel.PowerPoint,分别对应的扩展名为:.docx..pptx..xlsx. 许多教程都告诉我们,要提取这些文件中的图片(其实像视频 ...
随机推荐
- Python3之并发(六)---线程池
一.线程池 系统频繁的启动新线程,线程执行完被销毁,如果线程不能被重复使用,即每个线程都需要经过启动.销毁和运行3个过程,这必然会使得系统的性能急剧下降,线程池的意义就在于减少线程创建及消毁过程中损失 ...
- 【BOOK】动态渲染页面爬取--Selenium库
动态渲染页面爬取 JavaScript动态渲染 其中一种方式是Ajax请求,通过直接分析Ajax再用requests来实现数据爬取 另外一种方式是模拟浏览器运行 一. Selenium库 Seleni ...
- 【python】绘图,颜色,线型
颜色 最好用的:在网站上找到对应使用十六进制RGB/RGBA字符串表示颜色 可以看颜色及其对应色号名称:https://xkcd.com/color/rgb/ 参考:matplotlib指定绘图颜色的 ...
- element NavMenu侧栏导航菜单(可折叠)
展示效果如图: 代码: <el-scrollbar class="scrollbar-wrapper"> <!-- el-scrollbar超长可滚动 --> ...
- 收集的sql经典语句
经典SQL语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serve ...
- Python 错误:ModuleNotFoundError: No module named 'conf'
问题描述: 编译器无法使用cmd命令来执行py文件,结果可能报ModuleNotFoundError的错误. 比如在cmd任务栏执行:python E:\myProgram\Python\spider ...
- Offer 提速:如何写出有亮点的简历
先来个灵魂拷问: 你与他人相比,有什么能形成明显区分度的优势条件? 这里有两个层面的问题,一是 如何识别出你的优势条件,毕竟大多数人大多数时候可能都是在做业务,临到写简历的时候要求总结日常工作中跟别人 ...
- linux安装mongo-c-driver
yum install mongo-c-driver sudo yum install cmake openssl-devel cyrus-sasl-devel $ wget https://gith ...
- NOIP2013普及组
T1]记数问题 试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在1到11 中,即在1.2.3.4.5.6.7.8.9.10.11中,数字1 出现了4 次. 其实 ...
- window nginx php ci框架环境搭建
下载nginx 后修改配置文件: location / { #try_files $uri $uri/ /index.php?$query_string; root C:\Software\serve ...