Während Sie die PowerPoint-Präsentationen in einer .NET-Anwendung verarbeiten, müssen Sie möglicherweise Inhalte aus den PPT-Folien extrahieren. Der Inhalt kann in Form von Text und Bildern vorliegen. Im vorherigen Post haben wir die Textextraktion aus PowerPoint-Folien behandelt. In diesem Artikel zeigen wir Ihnen, wie Sie Bilder aus PowerPoint PPT oder PPTX in C# extrahieren.
- .NET-API zum Extrahieren von Bildern aus Präsentationen
- Bilder aus einer PPTX-Präsentation in C# extrahieren
- Bilder aus Formen extrahieren
- Bildextraktion aus dem Folienhintergrund
C# .NET API zum Extrahieren von Bildern aus PowerPoint PPT
Zum Extrahieren von Bildern aus PowerPoint PPT/PPTX verwenden wir Aspose.Slides for .NET. Es ist eine funktionsreiche .NET-API, mit der Sie neue Präsentationen erstellen und die vorhandenen nahtlos bearbeiten können. Sie können die DLL der API entweder herunterladen oder mit NuGet installieren.
PM> Install-Package Aspose.Slides.NET
Extrahieren Sie Bilder aus einer PowerPoint-PPT in C#
Im Folgenden sind die Schritte zum Extrahieren aller Bilder in einer PPT-Präsentation in C# aufgeführt.
- Verwenden Sie zunächst die Klasse Presentation, um die PPT/PPTX-Datei zu laden.
- Durchlaufen Sie dann alle Bilder in der Präsentation mit der Sammlung Presentation.Images.
- Holen Sie sich schließlich Typ und Format jedes Bildes und speichern Sie es.
Das folgende Codebeispiel zeigt, wie Bilder aus einer PowerPoint-PPT in C# extrahiert werden.
// Laden Sie die Präsentation
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_";
// Schleife durch Bilder
foreach (var image in pres.Images)
{
// Bildformat erhalten
format = GetImageFormat(image.ContentType);
// Bildtyp erhalten
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Bild speichern
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
Extrahieren Sie Bilder aus Formen in einer PPT
In verschiedenen Fällen müssen Sie möglicherweise nur Bilder aus den Formobjekten extrahieren. Dies kann durch Befolgen der folgenden Schritte erreicht werden.
- Verwenden Sie zunächst die Klasse Präsentation, um die Präsentationsdatei zu laden.
- Verwenden Sie dann die Sammlung Presentation.Slides, um die Folien zu durchlaufen.
- Greifen Sie für jede Folie über die Sammlung ISlide.Shapes auf ihre Formen zu.
- Führen Sie die folgenden Schritte für jede Form in der Sammlung aus:
- Wenn die Form eine automatische Form ist und mit einem Bild gefüllt ist, extrahieren Sie das Bild mit der Eigenschaft IShape.FillFormat.PictureFillFormat.Picture.Image.
- Wenn die Form ein Bilderrahmen ist, extrahieren Sie das Bild mit der Eigenschaft IPictureFrame.PictureFormat.Picture.Image.
- Abschließend speichern Sie das Bild als Datei.
Das folgende Codebeispiel zeigt, wie Sie Bilder aus Formen in einer PPT mit C# extrahieren.
// Laden Sie die Präsentation
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Blättern Sie durch die Folien
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Greifen Sie auf die Folie zu
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Schleife durch die Formen
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Greifen Sie auf die Form zu
IShape sh = slide.Shapes[j];
// Überprüfen Sie, ob es sich um eine automatische Form handelt
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// Überprüfen Sie, ob es ein Bild hat
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Bild erhalten
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Wenn die Form ein Bilderrahmen ist
IPictureFrame pf = (IPictureFrame)sh;
// Überprüfen Sie, ob es ein Bild enthält
if (pf.FillFormat.FillType == FillType.Picture)
{
// Bild erhalten
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Wenn das Bild gefunden wird, speichern Sie es
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
Bilder aus Folienhintergründen in C# extrahieren
Ein weiteres mögliches Szenario könnte das Extrahieren von Bildern sein, die nur als Folienhintergrund verwendet werden. Die folgenden Schritte zeigen, wie Sie Folienhintergrundbilder in C# extrahieren.
- Laden Sie zuerst die PPT/PPTX-Datei mit der Klasse Präsentation.
- Gehen Sie dann mithilfe der Sammlung Presentation.Slides durch die Folien in der Präsentation.
- Führen Sie für jede Folie die folgenden Schritte aus:
- Überprüfen Sie, ob die Folie ein Hintergrundbild hat, indem Sie die Eigenschaft ISlide.Background.FillFormat.FillType verwenden.
- Wenn der Hintergrund ein Bild enthält, extrahieren Sie das Bild mit der Eigenschaft Background.FillFormat.PictureFillFormat.Picture.Image.
- Überprüfen Sie, ob die Layoutfolie ein Hintergrundbild hat, indem Sie die Eigenschaft LayoutSlide.Background.FillFormat.FillType verwenden.
- Wenn der Hintergrund der Layoutfolie mit einem Bild gefüllt ist, extrahieren Sie es mit der Eigenschaft ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Speichern Sie abschließend das extrahierte Bild als Datei.
Das folgende Codebeispiel zeigt, wie Sie Bilder aus Folienhintergründen in einer PPT in C# extrahieren.
// Laden Sie die Präsentation
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++;
// Greifen Sie auf die Folie zu
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Überprüfen Sie, ob der Hintergrund ein Bild hat
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Bild bekommen
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Bildformat einstellen
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Bild speichern
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Hintergrundbild bekommen
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Bildformat einstellen
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Bild speichern
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Wir haben in allen obigen Codeschnipseln die Methode GetImageFormat verwendet. Diese Methode gibt das entsprechende Bildformat für den bereitgestellten Typ zurück. Die Implementierung dieses Verfahrens ist unten angegeben.
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;
}
Holen Sie sich eine kostenlose Lizenz
Sie können eine kostenlose temporäre Lizenz erhalten, um Aspose.Slides für .NET ohne Evaluierungseinschränkungen zu verwenden.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie Bilder aus PowerPoint PPT/PPTX in C# extrahieren. Anhand von Codebeispielen haben wir demonstriert, wie man Bilder aus Formen und Folienhintergründen extrahiert. Weitere Informationen zu Aspose.Slides für .NET finden Sie in der Dokumentation. Sie können Ihre Fragen auch über unser Forum stellen.