Extrahujte obrázky z PowerPoint PPT v C#

Při zpracování prezentací PowerPoint v aplikaci .NET může být nutné extrahovat obsah ze snímků PPT. Obsah může být ve formě textu a obrázků. V předchozím příspěvku jsme se zabývali extrakcí textu ze snímků aplikace PowerPoint. V tomto článku vám ukážeme, jak extrahovat obrázky z PowerPointu PPT nebo PPTX v C#.

C# API pro extrahování obrázků z PowerPoint PPT – bezplatné stažení

Pro extrahování obrázků z PowerPoint PPT/PPTX použijeme Aspose.Slides for .NET. Jedná se o funkčně bohaté rozhraní .NET API, které vám umožňuje vytvářet nové prezentace a bezproblémově manipulovat s těmi stávajícími. Můžete si stáhnout DLL API nebo ji nainstalovat pomocí NuGet.

PM> Install-Package Aspose.Slides.NET

Extrahujte obrázky z PowerPoint PPT v C#

Následují kroky k extrahování všech obrázků v PPT prezentaci v C#.

  • Nejprve použijte třídu Presentation k načtení souboru PPT/PPTX.
  • Poté procházejte všechny obrázky v prezentaci pomocí kolekce Presentation.Images.
  • Nakonec získejte typ a formát každého obrázku a uložte jej.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z PowerPoint PPT v C#.

// Načtěte prezentaci
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_";

// Procházet obrázky
foreach (var image in pres.Images)
{
    // Získejte formát obrázku
    format = GetImageFormat(image.ContentType);

    // Získejte typ obrázku
    imageType = image.ContentType;
    imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);

    // Uložit obrázek
    image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
    imageIndex++;
}

C# Extrahujte obrázky z PowerPoint PPT Shapes

V různých případech může být nutné extrahovat obrázky pouze z objektů tvaru. Toho lze dosáhnout pomocí následujících kroků.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z obrazců v PowerPoint PPT pomocí C#.

// Načtěte prezentaci
Presentation pres = new Presentation("presentation.pptx");

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

// Procházejte snímky
for (int i = 0; i < pres.Slides.Count; i++)
{
    slideIndex++;
    // Přístup ke snímku
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Procházejte tvary
   for (int j = 0; j < slide.Shapes.Count; j++)
    {
        // Přístup k tvaru
        IShape sh = slide.Shapes[j];

        // Zkontrolujte, zda se jedná o automatický tvar
        if (sh is AutoShape)
        {
            AutoShape ashp = (AutoShape)sh;

            // Zkontrolujte, zda má obrázek
            if (ashp.FillFormat.FillType == FillType.Picture)
            {
                // Získejte obrázek
                img = ashp.FillFormat.PictureFillFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;

            }
        }
        else if (sh is PictureFrame)
        {
            // Pokud tvar je rám obrazu
            IPictureFrame pf = (IPictureFrame)sh;

            // Zkontrolujte, zda obsahuje obrázek
            if (pf.FillFormat.FillType == FillType.Picture)
            {
                // Získejte obrázek
                img = pf.PictureFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;
            }
        }

        // Pokud je obrázek nalezen, uložte jej
        if (isImageFound)
        {
            format = GetImageFormat(imageType);
            String imagePath = "Image_";
            img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
        }

        isImageFound = false;
    }
}

C# PowerPoint extrakce obrázků z pozadí snímků

Dalším možným scénářem může být extrahování obrázků, které se používají pouze jako pozadí snímků. Následující kroky ukazují, jak extrahovat obrázky pozadí snímků PPT v C#.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z pozadí snímků PPT v C#.

// Načtěte prezentaci
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++;
    // Přístup ke snímku
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Zkontrolujte, zda má pozadí obrázek
    if (slide.Background.FillFormat.FillType == FillType.Picture)
    {
        // Získejte obrázek  
        backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;

        // Nastavte formát obrázku 
        imageType = backImg.ContentType;
        imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
        format = GetImageFormat(imageType);

        // Uložit obrázek
        String imagePath = "BackImage_";
        backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
    }
    else
    {
        if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
        {
            // Získejte obrázek na pozadí  
            backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;

            // Nastavte formát obrázku 
            imageType = backImg.ContentType;
            imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
            format = GetImageFormat(imageType);

            // Uložit obrázek
            String imagePath = "BackImage_Slide_" + i;
            backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);

        }
    }                
}

Ve všech výše uvedených úryvcích kódu jsme použili metodu GetImageFormat. Tato metoda vrátí vhodný formát obrázku pro zadaný typ. Implementace této metody je uvedena níže.

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 – Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a extrahovat obrázky ze snímků PPT bez omezení hodnocení.

Závěr

V tomto článku jste se naučili, jak extrahovat obrázky z PowerPoint PPT v C#. S pomocí ukázek kódu jsme si ukázali, jak extrahovat obrázky z tvarů a pozadí snímků. Více o Aspose.Slides pro .NET můžete prozkoumat na dokumentaci. Také se můžete ptát na naše fórum.

Viz také