Bilder aus PowerPoint PPT in C# extrahieren

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.

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.

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.

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.

Siehe auch