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
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
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
—本文完—