How to Access & Extract Images from Presentation Shapes inside .NET Apps

This technical tip explains how .NET developers can extract images from presentation shapes inside their .NET applications. Images are added in slide background and shapes. Sometimes, it is required to extract the images added in the presentation shapes. The images are added in IPPImageCollection inside Presentation Document Object Model (DOM). This article covers the feature of accessing the images in presentation shape, extracting them from presentation collection and saving them in a file. In Aspose.Slides for .NET, images can be added to slide shape and slide background. The images are added in IPPImageCollection of the presentation. In this example we will traverse through each shape inside every slide of presentation and see if there is any image added in slide shape. If the image will be found for any shape, we will extract that and will save it in file. The following code snippet will serve the purpose.
//your code here... // Code Snippet for Extracting images from presentation shapes [C# Code Sample] String path = @"D:\Aspose Data\"; //Accessing the presentation Presentation pres = new Presentation(path + "ExtractImages.pptx"); Aspose.Slides.IPPImage img = null; Aspose.Slides.IPPImage Backimg = null; int slideIndex = 0; String ImageType = ""; bool ifImageFound = false; for (int i = 0; i < pres.Slides.Count; i++) { slideIndex++; //Accessing the first slide ISlide sl = pres.Slides[i]; System.Drawing.Imaging.ImageFormat Format = System.Drawing.Imaging.ImageFormat.Jpeg; //Accessing the first slide Slide sl = pres.getSlideByPosition(i); if (sl.Background.FillFormat.FillType == FillType.Picture) { //Getting the back picture Backimg = sl.Background.FillFormat.PictureFillFormat.Picture.Image; //Setting the desired picture format ImageType = Backimg.ContentType; ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1); Format = GetImageFormat(ImageType); String ImagePath = path + "BackImage_"; Backimg.SystemImage.Save(ImagePath + "Slide_" + slideIndex.ToString() + "." + ImageType, Format); } else { if (sl.LayoutSlide.Background.FillFormat.FillType == FillType.Picture) { //Getting the back picture Backimg = sl.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image; //Setting the desired picture format ImageType = Backimg.ContentType; ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1); Format = GetImageFormat(ImageType); String ImagePath = path + "BackImage_Slide_" + i; Backimg.SystemImage.Save(ImagePath + "LayoutSlide_" + slideIndex.ToString() + "." + ImageType, Format); } } for (int j = 0; j < sl.Shapes.Count; j++) { // Accessing the shape with picture IShape sh = sl.Shapes[j]; if (sh is AutoShape) { AutoShape ashp = (AutoShape)sh; if (ashp.FillFormat.FillType == FillType.Picture) { img = ashp.FillFormat.PictureFillFormat.Picture.Image; ImageType = img.ContentType; ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1); ifImageFound = true; } } else if (sh is PictureFrame) { IPictureFrame pf = (IPictureFrame)sh; if (pf.FillFormat.FillType == FillType.Picture) { img = pf.PictureFormat.Picture.Image; ImageType = img.ContentType; ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1); ifImageFound = true; } } // //Setting the desired picture format if (ifImageFound) { Format = GetImageFormat(ImageType); String ImagePath = path + "Slides\\Image_"; img.SystemImage.Save(ImagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + ImageType, Format); } ifImageFound = false; } } 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; } [VB.NET Code Sample] Dim path As String = "D:\Aspose Data\" 'Accessing the presentation Dim pres As New Presentation(path & "ExtractImages.pptx") Dim img As Aspose.Slides.IPPImage = Nothing Dim Backimg As Aspose.Slides.IPPImage = Nothing Dim slideIndex As Integer = 0 Dim ImageType As String = "" Dim ifImageFound As Boolean = False For i As Integer = 0 To pres.Slides.Count - 1 slideIndex += 1 'Accessing the first slide Dim sl As ISlide = pres.Slides(i) Dim Format As System.Drawing.Imaging.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg 'Accessing the first slide Slide sl = pres.getSlideByPosition(i); If sl.Background.FillFormat.FillType = FillType.Picture Then 'Getting the back picture Backimg = sl.Background.FillFormat.PictureFillFormat.Picture.Image 'Setting the desired picture format ImageType = Backimg.ContentType ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1) Format = GetImageFormat(ImageType) Dim ImagePath As String = path & "BackImage_" Backimg.SystemImage.Save(ImagePath & "Slide_" & slideIndex.ToString() & "." & ImageType, Format) Else If sl.LayoutSlide.Background.FillFormat.FillType = FillType.Picture Then 'Getting the back picture Backimg = sl.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image 'Setting the desired picture format ImageType = Backimg.ContentType ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1) Format = GetImageFormat(ImageType) Dim ImagePath As String = path & "BackImage_Slide_" & i Backimg.SystemImage.Save(ImagePath & "LayoutSlide_" & slideIndex.ToString() & "." & ImageType, Format) End If End If For j As Integer = 0 To sl.Shapes.Count - 1 ' Accessing the shape with picture Dim sh As IShape = sl.Shapes(j) If TypeOf sh Is AutoShape Then Dim ashp As AutoShape = CType(sh, AutoShape) If ashp.FillFormat.FillType = FillType.Picture Then img = ashp.FillFormat.PictureFillFormat.Picture.Image ImageType = img.ContentType ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1) ifImageFound = True End If ElseIf TypeOf sh Is PictureFrame Then Dim pf As IPictureFrame = CType(sh, IPictureFrame) If pf.FillFormat.FillType = FillType.Picture Then img = pf.PictureFormat.Picture.Image ImageType = img.ContentType ImageType = ImageType.Remove(0, ImageType.IndexOf("/") + 1) ifImageFound = True End If End If ' 'Setting the desired picture format If ifImageFound Then Format = GetImageFormat(ImageType) Dim ImagePath As String = path & "Slides\Image_" img.SystemImage.Save(ImagePath & "Slide_" & slideIndex.ToString() & "_Shape_" & j.ToString() & "." & ImageType, Format) End If ifImageFound = False Next j Next i End Sub Public Shared Function GetImageFormat(ByVal ImageType As String) As System.Drawing.Imaging.ImageFormat Dim Format As System.Drawing.Imaging.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg Select Case ImageType Case "jpeg" Format = System.Drawing.Imaging.ImageFormat.Jpeg Case "emf" Format = System.Drawing.Imaging.ImageFormat.Emf Case "bmp" Format = System.Drawing.Imaging.ImageFormat.Bmp Case "png" Format = System.Drawing.Imaging.ImageFormat.Png Case "wmf" Format = System.Drawing.Imaging.ImageFormat.Wmf Case "gif" Format = System.Drawing.Imaging.ImageFormat.Gif End Select Return Format End Function

Url: http://www.aspose.com/docs/display/slidesnet/Extracting+Images+from+Presentation+shapes

Language: C# | User: Sheraz Khan | Created: Jul 1, 2015 | Tags: access images in presentation shape extract images from presentation extract images from PPT slide shape extract images from slide background Presentation Document Object Model .NET PowerPoint API PowerPoint .NET Component