Extrahera bilder från PowerPoint PPT i C#

När du bearbetar PowerPoint-presentationer i ett .NET-program kan du behöva extrahera innehåll från PPT-bilderna. Innehållet kan vara i form av text och bilder. I föregående inlägg har vi täckt textextraktion från PowerPoint-bilder. I den här artikeln kommer vi att visa dig hur du extraherar bilder från PowerPoint PPT eller PPTX i C#.

C# API för att extrahera bilder från PowerPoint PPT - Gratis nedladdning

För att extrahera bilder från PowerPoint PPT/PPTX kommer vi att använda Aspose.Slides for .NET. Det är ett funktionsrikt .NET API som låter dig skapa nya presentationer och manipulera de befintliga sömlöst. Du kan antingen ladda ner API:s DLL eller installera den med NuGet.

PM> Install-Package Aspose.Slides.NET

Extrahera bilder från en PowerPoint PPT i C#

Följande är stegen för att extrahera alla bilder i en PPT-presentation i C#.

  • Använd först klassen Presentation för att ladda PPT/PPTX-filen.
  • Gå sedan igenom alla bilder i presentationen med Presentation.Images-samlingen.
  • Slutligen, skaffa typ och format för varje bild och spara den.

Följande kodexempel visar hur man extraherar bilder från en PowerPoint PPT i C#.

// Ladda presentationen
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_";

// Gå igenom bilder
foreach (var image in pres.Images)
{
    // Skaffa bildformat
    format = GetImageFormat(image.ContentType);

    // Hämta bildtyp
    imageType = image.ContentType;
    imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);

    // Spara bild
    image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
    imageIndex++;
}

C# Extrahera bilder från PowerPoint PPT Shapes

I olika fall kan du behöva extrahera bilder endast från formobjekten. Detta kan uppnås genom att följa stegen nedan.

Följande kodexempel visar hur man extraherar bilder från former i en PowerPoint PPT med C#.

// Ladda presentationen
Presentation pres = new Presentation("presentation.pptx");

Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;

// Slinga genom diabilder
for (int i = 0; i < pres.Slides.Count; i++)
{
    slideIndex++;
    // Få åtkomst till rutschkanan
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Slinga genom formerna
   for (int j = 0; j < slide.Shapes.Count; j++)
    {
        // Få tillgång till formen
        IShape sh = slide.Shapes[j];

        // Kontrollera om det är en autoform
        if (sh is AutoShape)
        {
            AutoShape ashp = (AutoShape)sh;

            // Kolla om den har bild
            if (ashp.FillFormat.FillType == FillType.Picture)
            {
                // Få bild
                img = ashp.FillFormat.PictureFillFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;

            }
        }
        else if (sh is PictureFrame)
        {
            // Om formen är en bildram
            IPictureFrame pf = (IPictureFrame)sh;

            // Kontrollera om den innehåller en bild
            if (pf.FillFormat.FillType == FillType.Picture)
            {
                // Få bild
                img = pf.PictureFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;
            }
        }

        // Om bilden hittas spara den
        if (isImageFound)
        {
            format = GetImageFormat(imageType);
            String imagePath = "Image_";
            img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
        }

        isImageFound = false;
    }
}

C# PowerPoint-bildextraktion från bildbakgrunder

Ett annat möjligt scenario kan vara att extrahera bilder som endast används som bildbakgrunder. Följande steg visar hur man extraherar PPT-bildbakgrundsbilder i C#.

Följande kodexempel visar hur man extraherar bilder från PPT-bildbakgrunder i C#.

// Ladda presentationen
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++;
    // Gå till rutschkanan
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Kontrollera om bakgrunden har bild
    if (slide.Background.FillFormat.FillType == FillType.Picture)
    {
        // Få bild  
        backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;

        // Ställ in bildformat 
        imageType = backImg.ContentType;
        imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
        format = GetImageFormat(imageType);

        // Spara bild
        String imagePath = "BackImage_";
        backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
    }
    else
    {
        if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
        {
            // Få bakgrundsbild  
            backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;

            // Ställ in bildformat 
            imageType = backImg.ContentType;
            imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
            format = GetImageFormat(imageType);

            // Spara bild
            String imagePath = "BackImage_Slide_" + i;
            backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);

        }
    }                
}

Vi har använt metoden GetImageFormat i alla ovanstående kodsnuttar. Denna metod returnerar lämpligt bildformat för den angivna typen. Implementeringen av denna metod ges nedan.

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# PPT Image Extraction API - Skaffa en gratis licens

Du kan få en gratis tillfällig licens och extrahera bilder från PPT-bilder utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har du lärt dig hur du extraherar bilder från PowerPoint PPT i C#. Med hjälp av kodprover har vi demonstrerat hur man extraherar bilder från former och bildbakgrunder. Du kan utforska mer om Aspose.Slides för .NET genom att besöka dokumentationen. Du kan också ställa dina frågor via vårt forum.

Se även