Estrai immagini da PowerPoint PPT in C#

Durante l’elaborazione delle presentazioni PowerPoint in un’applicazione .NET, potrebbe essere necessario estrarre il contenuto dalle diapositive PPT. Il contenuto potrebbe essere sotto forma di testo e immagini. Nel post precedente, abbiamo trattato l’estrazione del testo dalle diapositive di PowerPoint. In questo articolo, ti mostreremo come estrarre immagini da PowerPoint PPT o PPTX in C#.

API C# .NET per estrarre immagini da PowerPoint PPT

Per estrarre immagini da PowerPoint PPT/PPTX, utilizzeremo Aspose.Slides for .NET. È un’API .NET ricca di funzionalità che ti consente di creare nuove presentazioni e manipolare quelle esistenti senza problemi. Puoi scaricare la DLL dell’API o installarla utilizzando NuGet.

PM> Install-Package Aspose.Slides.NET

Estrai immagini da un PPT di PowerPoint in C#

Di seguito sono riportati i passaggi per estrarre tutte le immagini in una presentazione PPT in C#.

  • Per prima cosa, usa la classe Presentazione per caricare il file PPT/PPTX.
  • Quindi, scorrere tutte le immagini nella presentazione utilizzando la raccolta Presentation.Images.
  • Infine, ottieni il tipo e il formato di ciascuna immagine e salvala.

Nell’esempio di codice seguente viene illustrato come estrarre immagini da un PPT di PowerPoint in C#.

// Carica la presentazione
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_";

// Scorri le immagini
foreach (var image in pres.Images)
{
    // Ottieni formato immagine
    format = GetImageFormat(image.ContentType);

    // Ottieni tipo di immagine
    imageType = image.ContentType;
    imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);

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

Estrai immagini dalle forme in un PPT

In vari casi, potrebbe essere necessario estrarre immagini solo dagli oggetti forma. Questo può essere ottenuto seguendo i passaggi seguenti.

L’esempio di codice seguente mostra come estrarre immagini dalle forme in un PPT usando C#.

// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");

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

// Passa attraverso le diapositive
for (int i = 0; i < pres.Slides.Count; i++)
{
    slideIndex++;
    // Accedi alla diapositiva
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Passa attraverso le forme
    for (int j = 0; j < slide.Shapes.Count; j++)
    {
        // Accedi alla forma
        IShape sh = slide.Shapes[j];

        // Controlla che sia una forma automatica
        if (sh is AutoShape)
        {
            AutoShape ashp = (AutoShape)sh;

            // Controlla se ha un'immagine
            if (ashp.FillFormat.FillType == FillType.Picture)
            {
                // Ottieni immagine
                img = ashp.FillFormat.PictureFillFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;

            }
        }
        else if (sh is PictureFrame)
        {
            // Se la forma è una cornice
            IPictureFrame pf = (IPictureFrame)sh;

            // Controlla se contiene un'immagine
            if (pf.FillFormat.FillType == FillType.Picture)
            {
                // Ottieni immagine
                img = pf.PictureFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;
            }
        }

        // Se l'immagine viene trovata, salvala
        if (isImageFound)
        {
            format = GetImageFormat(imageType);
            String imagePath = "Image_";
            img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
        }

        isImageFound = false;
    }
}

Estrai immagini dagli sfondi delle diapositive in C#

Un altro possibile scenario potrebbe essere l’estrazione di immagini che vengono utilizzate solo come sfondi per le diapositive. I passaggi seguenti mostrano come estrarre le immagini di sfondo delle diapositive in C#.

L’esempio di codice seguente mostra come estrarre immagini dagli sfondi delle diapositive in un PPT in C#.

// Carica la presentazione
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++;
    // Accedi alla diapositiva
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Controlla se lo sfondo ha un'immagine
    if (slide.Background.FillFormat.FillType == FillType.Picture)
    {
        // Ottieni una foto  
        backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;

        // Imposta il formato dell'immagine 
        imageType = backImg.ContentType;
        imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
        format = GetImageFormat(imageType);

        // Salva immagine
        String imagePath = "BackImage_";
        backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
    }
    else
    {
        if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
        {
            // Ottieni un'immagine di sfondo  
            backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;

            // Imposta il formato dell'immagine 
            imageType = backImg.ContentType;
            imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
            format = GetImageFormat(imageType);

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

        }
    }                
}

Abbiamo usato il metodo GetImageFormat in tutti i frammenti di codice sopra. Questo metodo restituisce il formato immagine appropriato per il tipo fornito. L’implementazione di questo metodo è data di seguito.

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;
}

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.Slides per .NET senza limitazioni di valutazione.

Conclusione

In questo articolo, hai imparato come estrarre immagini da PowerPoint PPT/PPTX in C#. Con l’aiuto di esempi di codice, abbiamo dimostrato come estrarre immagini da forme e sfondi di diapositive. Puoi esplorare di più su Aspose.Slides per .NET visitando la documentazione. Inoltre, puoi porre le tue domande tramite il nostro forum.

Guarda anche