在 .NET 應用程序中處理 PowerPoint 演示文稿時,您可能需要從 PPT 幻燈片中提取內容。內容可以是文本和圖像的形式。在 上一篇文章 中,我們介紹了從 PowerPoint 幻燈片中提取文本。在本文中,我們將向您展示如何在 C# 中從 PowerPoint PPT 或 PPTX 中提取圖像。
從 PowerPoint PPT 中提取圖像的 C# API - 免費下載
為了從 PowerPoint PPT/PPTX 中提取圖像,我們將使用 Aspose.Slides for .NET。它是一個功能豐富的 .NET API,允許您創建新的演示文稿並無縫地操作現有的演示文稿。您可以 下載 API 的 DLL 或使用 NuGet 安裝它。
PM> Install-Package Aspose.Slides.NET
在 C# 中從 PowerPoint PPT 中提取圖像
下面是用C#提取PPT演示文稿中所有圖片的步驟。
- 首先,使用Presentation類加載PPT/PPTX文件。
- 然後,使用 Presentation.Images 集合遍歷演示文稿中的所有圖像。
- 最後,獲取每個圖像的類型和格式並保存。
下面的代碼示例展示瞭如何在 C# 中從 PowerPoint PPT 中提取圖像。
// 加載演示文稿
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
int imageIndex = 1;
string imageType = "";
String imagePath = "Image_";
// 循環圖像
foreach (var image in pres.Images)
{
// 獲取圖像格式
format = GetImageFormat(image.ContentType);
// 獲取圖像類型
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// 保存圖片
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
從 PPT 中的形狀中提取圖像
在各種情況下,您可能只需要從形狀對像中提取圖像。這可以通過執行以下步驟來實現。
- 首先,使用 Presentation 類加載演示文稿文件。
- 然後,使用 Presentation.Slides 集合循環播放幻燈片。
- 對於每張幻燈片,使用 ISlide.Shapes 集合訪問其形狀。
- 對集合中的每個形狀執行以下步驟:
- 如果形狀是自動形狀並且填充有圖片,則使用 IShape.FillFormat.PictureFillFormat.Picture.Image 屬性提取圖像。
- 如果形狀是相框,則使用 IPictureFrame.PictureFormat.Picture.Image 屬性提取圖像。
- 最後,將圖像保存為文件。
下面的代碼示例展示瞭如何使用 C# 從 PPT 中的形狀中提取圖像。
// 加載演示文稿
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// 循環播放幻燈片
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// 訪問幻燈片
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// 遍歷形狀
for (int j = 0; j < slide.Shapes.Count; j++)
{
// 訪問形狀
IShape sh = slide.Shapes[j];
// 檢查它是否是自動形狀
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// 看看有沒有圖片
if (ashp.FillFormat.FillType == FillType.Picture)
{
// 獲取圖像
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// 如果形狀是相框
IPictureFrame pf = (IPictureFrame)sh;
// 檢查是否包含圖片
if (pf.FillFormat.FillType == FillType.Picture)
{
// 獲取圖像
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// 如果找到圖像則保存它
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
C# 從 PPTX 幻燈片背景中提取圖像
另一種可能的情況是提取僅用作幻燈片背景的圖像。以下步驟展示瞭如何在 C# 中提取幻燈片背景圖像。
- 首先,使用 Presentation 類加載 PPT/PPTX 文件。
- 然後,使用 Presentation.Slides 集合循環瀏覽演示文稿中的幻燈片。
- 對於每張幻燈片,執行以下步驟:
- 使用 ISlide.Background.FillFormat.FillType 屬性檢查幻燈片是否有背景圖像。
- 如果背景有圖片,則使用 Background.FillFormat.PictureFillFormat.Picture.Image 屬性提取圖像。
- 使用 LayoutSlide.Background.FillFormat.FillType 屬性檢查佈局幻燈片是否具有背景圖像。
- 如果佈局幻燈片的背景充滿圖片,則使用 ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image 屬性將其提取。
- 最後,將提取的圖像保存為文件。
以下代碼示例展示瞭如何使用 C# 從 PPT 中的幻燈片背景中提取圖像。
// 加載演示文稿
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage backImg = null;
int slideIndex = 0;
String imageType = "";
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// 訪問幻燈片
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// 檢查背景是否有圖片
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// 獲取圖片
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// 設置圖片格式
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// 保存圖片
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// 獲取背景圖片
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// 設置圖片格式
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// 保存圖片
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
我們在上述所有代碼片段中都使用了 GetImageFormat 方法。此方法返回所提供類型的適當圖像格式。下面給出該方法的實現。
public static System.Drawing.Imaging.ImageFormat GetImageFormat(String ImageType)
{
System.Drawing.Imaging.ImageFormat Format = System.Drawing.Imaging.ImageFormat.Jpeg;
switch (ImageType)
{
case "jpeg":
Format = System.Drawing.Imaging.ImageFormat.Jpeg;
break;
case "emf":
Format = System.Drawing.Imaging.ImageFormat.Emf;
break;
case "bmp":
Format = System.Drawing.Imaging.ImageFormat.Bmp;
break;
case "png":
Format = System.Drawing.Imaging.ImageFormat.Png;
break;
case "wmf":
Format = System.Drawing.Imaging.ImageFormat.Wmf;
break;
case "gif":
Format = System.Drawing.Imaging.ImageFormat.Gif;
break;
}
return Format;
}
C# PowerPoint PPT 圖像提取 API - 獲取免費許可證
您可以獲得 免費臨時許可證 以在沒有評估限制的情況下使用 Aspose.Slides for .NET。
結論
在本文中,您學習瞭如何使用 C# 從 PowerPoint PPT 中提取圖像。在代碼示例的幫助下,我們演示瞭如何從形狀和幻燈片背景中提取圖像。您可以通過訪問 文檔 探索更多關於 Aspose.Slides for .NET 的信息。此外,您可以通過我們的 論壇 提問。