Extraire des images de PowerPoint PPT en C#

Lors du traitement des présentations PowerPoint dans une application .NET, vous devrez peut-être extraire le contenu des diapositives PPT. Le contenu peut être sous forme de texte et d’images. Dans le article précédent, nous avons couvert l’extraction de texte à partir de diapositives PowerPoint. Dans cet article, nous allons vous montrer comment extraire des images de PowerPoint PPT ou PPTX en C#.

API C# .NET pour extraire des images de PowerPoint PPT

Pour extraire des images de PowerPoint PPT/PPTX, nous utiliserons Aspose.Slides for .NET. Il s’agit d’une API .NET riche en fonctionnalités qui vous permet de créer de nouvelles présentations et de manipuler celles qui existent de manière transparente. Vous pouvez soit télécharger la DLL de l’API, soit l’installer à l’aide de NuGet.

PM> Install-Package Aspose.Slides.NET

Extraire des images d’un PPT PowerPoint en C#

Voici les étapes pour extraire toutes les images d’une présentation PPT en C#.

  • Tout d’abord, utilisez la classe Presentation pour charger le fichier PPT/PPTX.
  • Ensuite, parcourez toutes les images de la présentation à l’aide de la collection Presentation.Images.
  • Enfin, récupérez le type et le format de chaque image et enregistrez-la.

L’exemple de code suivant montre comment extraire des images d’un PPT PowerPoint en C#.

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

// Boucle à travers les images
foreach (var image in pres.Images)
{
    // Obtenir le format d'image
    format = GetImageFormat(image.ContentType);

    // Obtenir le type d'image
    imageType = image.ContentType;
    imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);

    // Enregistrer l'image
    image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
    imageIndex++;
}

Extraire des images de formes dans un PPT

Dans divers cas, vous devrez peut-être extraire des images des objets de forme uniquement. Ceci peut être réalisé en suivant les étapes ci-dessous.

  • Tout d’abord, utilisez la classe Presentation pour charger le fichier de présentation.
  • Ensuite, utilisez la collection Presentation.Slides pour parcourir les diapositives.
  • Pour chaque diapositive, accédez à ses formes à l’aide de la collection ISlide.Shapes.
  • Effectuez les étapes suivantes pour chaque forme de la collection :

L’exemple de code suivant montre comment extraire des images de formes dans un PPT à l’aide de C#.

// Charger la présentation
Presentation pres = new Presentation("presentation.pptx");

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

// Boucle à travers les diapositives
for (int i = 0; i < pres.Slides.Count; i++)
{
    slideIndex++;
    // Accéder à la diapositive
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Boucle à travers les formes
    for (int j = 0; j < slide.Shapes.Count; j++)
    {
        // Accéder à la forme
        IShape sh = slide.Shapes[j];

        // Vérifiez s'il s'agit d'une forme automatique
        if (sh is AutoShape)
        {
            AutoShape ashp = (AutoShape)sh;

            // Vérifiez s'il a une image
            if (ashp.FillFormat.FillType == FillType.Picture)
            {
                // Obtenir une image
                img = ashp.FillFormat.PictureFillFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;

            }
        }
        else if (sh is PictureFrame)
        {
            // Si la forme est un cadre photo
            IPictureFrame pf = (IPictureFrame)sh;

            // Vérifiez s'il contient une image
            if (pf.FillFormat.FillType == FillType.Picture)
            {
                // Obtenir une image
                img = pf.PictureFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;
            }
        }

        // Si l'image est trouvée, enregistrez-la
        if (isImageFound)
        {
            format = GetImageFormat(imageType);
            String imagePath = "Image_";
            img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
        }

        isImageFound = false;
    }
}

Extraire des images d’arrière-plans de diapositives en C#

Un autre scénario possible pourrait être l’extraction d’images utilisées uniquement comme arrière-plan de diapositive. Les étapes suivantes montrent comment extraire des images d’arrière-plan de diapositive en C#.

L’exemple de code suivant montre comment extraire des images d’arrière-plans de diapositives dans un PPT en C#.

// Charger la 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++;
    // Accéder à la diapositive
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Vérifiez si l'arrière-plan a une image
    if (slide.Background.FillFormat.FillType == FillType.Picture)
    {
        // Obtenir une image  
        backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;

        // Définir le format d'image 
        imageType = backImg.ContentType;
        imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
        format = GetImageFormat(imageType);

        // Enregistrer l'image
        String imagePath = "BackImage_";
        backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
    }
    else
    {
        if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
        {
            // Obtenir une image de fond  
            backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;

            // Définir le format d'image 
            imageType = backImg.ContentType;
            imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
            format = GetImageFormat(imageType);

            // Enregistrer l'image
            String imagePath = "BackImage_Slide_" + i;
            backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);

        }
    }                
}

Nous avons utilisé la méthode GetImageFormat dans tous les extraits de code ci-dessus. Cette méthode renvoie le format d’image approprié pour le type fourni. La mise en oeuvre de cette méthode est donnée ci-dessous.

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

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour utiliser Aspose.Slides for .NET sans limitations d’évaluation.

Conclusion

Dans cet article, vous avez appris à extraire des images de PowerPoint PPT/PPTX en C#. À l’aide d’exemples de code, nous avons montré comment extraire des images à partir de formes et d’arrière-plans de diapositives. Vous pouvez en savoir plus sur Aspose.Slides for .NET en visitant la documentation. Vous pouvez également poser vos questions via notre forum.

Voir également