C#/VB.NET实现从PPT中提取图片的示例代码

 更新时间:2023年03月14日 09:00:38   作者:Carina-baby  
PPT是用于制作幻灯片(演示文稿)的应用软件,每张幻灯片中都可以包含文字、图形、图形、表格、声音和影像等多种信息。本文主要介绍了如何实现从PPT中提取图片的功能,需要的可以参考一下

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实现从PPT中提取图片的示例代码的文章就介绍到这了,更多相关C# PPT提取图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#实现ComboBox自动匹配字符

    C#实现ComboBox自动匹配字符

    本文介绍C#如何实现ComboBox自动匹配字符1.采用CustomSource当做提示集合2. 直接使用下拉列表中的项作为匹配的集合,需要了解的朋友可以参考下
    2012-12-12
  • C#实现排序的代码详解

    C#实现排序的代码详解

    在本篇文章里小编给大家整理的是关于C#实现排序的代码以及相关知识点,需要的朋友们参考下。
    2019-10-10
  • c#读写ini配置文件示例

    c#读写ini配置文件示例

    虽然c#里都是添加app.config 并且访问也很方便 ,有时候还是不习惯用他。那么我们来做个仿C++下的那种ini配置文件读写吧
    2014-04-04
  • Unity UGUI的PhysicsRaycaster物理射线检测组件介绍使用

    Unity UGUI的PhysicsRaycaster物理射线检测组件介绍使用

    这篇文章主要介绍了Unity UGUI的PhysicsRaycaster物理射线检测组件的介绍及使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • C#多线程之线程池ThreadPool用法

    C#多线程之线程池ThreadPool用法

    这篇文章介绍了C#多线程之线程池ThreadPool的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#调用webservice接口的最新方法教程

    C#调用webservice接口的最新方法教程

    webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。下面这篇文章主要给大家介绍了关于C#调用webservice接口的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面随着小编来一起看看吧。
    2017-11-11
  • C#使用FileStream对象读写文件

    C#使用FileStream对象读写文件

    这篇文章主要为大家详细介绍了C#使用FileStream对象读写文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • SuperSocket入门--Telnet服务器和客户端请求处理

    SuperSocket入门--Telnet服务器和客户端请求处理

    本文的控制台项目是根据SuperSocket官方Telnet示例代码进行调试的,官方示例代码:Telnet示例。下面跟着小编一起来看下吧
    2017-01-01
  • C#从字符串中指定位置移除子字符串的方法

    C#从字符串中指定位置移除子字符串的方法

    这篇文章主要介绍了C#从字符串中指定位置移除子字符串的方法,涉及C#中Remove方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • c# list部分操作实现代码

    c# list部分操作实现代码

    这篇文章主要介绍了c# list部分操作,需要的朋友可以参考下
    2013-09-09

最新评论