Extract Images from Presentation Shapes - Vb

How to Access Extract Images from Presentation Shapes

Snippet Code


  
Rate this page :
  [ 0 votes]

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.

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 &"SlidesImage_" 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

Tags


Ask Questions

Ask Question