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 .NET pour extraire des images de présentations
- Extraire des images d’une présentation PPTX en C#
- Extraire des images à partir de formes
- Extraction d’image à partir de l’arrière-plan de la diapositive
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 :
- Si la forme est une forme automatique et qu’elle est remplie avec une image, extrayez l’image à l’aide de la propriété IShape.FillFormat.PictureFillFormat.Picture.Image.
- Si la forme est un cadre d’image, extrayez l’image à l’aide de la propriété IPictureFrame.PictureFormat.Picture.Image.
- Enfin, enregistrez l’image en tant que fichier.
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#.
- Tout d’abord, chargez le fichier PPT/PPTX en utilisant la classe Presentation.
- Parcourez ensuite les diapositives de la présentation à l’aide de la collection Presentation.Slides.
- Pour chaque diapositive, effectuez les étapes suivantes :
- Vérifiez si la diapositive a une image d’arrière-plan à l’aide de la propriété ISlide.Background.FillFormat.FillType.
- Si l’arrière-plan contient une image, extrayez l’image à l’aide de la propriété Background.FillFormat.PictureFillFormat.Picture.Image.
- Vérifiez si la diapositive de mise en page a une image d’arrière-plan à l’aide de la propriété LayoutSlide.Background.FillFormat.FillType.
- Si l’arrière-plan de la diapositive de mise en page est rempli d’une image, extrayez-la à l’aide de la propriété ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Enfin, enregistrez l’image extraite en tant que fichier.
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.