När du bearbetar PowerPoint-presentationer i ett .NET-program kan du behöva extrahera innehåll från PPT-bilderna. Innehållet kan vara i form av text och bilder. I föregående inlägg har vi täckt textextraktion från PowerPoint-bilder. I den här artikeln kommer vi att visa dig hur du extraherar bilder från PowerPoint PPT eller PPTX i C#.
- C# API för att extrahera bilder från PowerPoint PPT
- Extrahera bilder från en PPTX i C#
- Extrahera bilder från former i PPT
- Bildextraktion från PPT-bildbakgrund
C# API för att extrahera bilder från PowerPoint PPT - Gratis nedladdning
För att extrahera bilder från PowerPoint PPT/PPTX kommer vi att använda Aspose.Slides for .NET. Det är ett funktionsrikt .NET API som låter dig skapa nya presentationer och manipulera de befintliga sömlöst. Du kan antingen ladda ner API:s DLL eller installera den med NuGet.
PM> Install-Package Aspose.Slides.NET
Extrahera bilder från en PowerPoint PPT i C#
Följande är stegen för att extrahera alla bilder i en PPT-presentation i C#.
- Använd först klassen Presentation för att ladda PPT/PPTX-filen.
- Gå sedan igenom alla bilder i presentationen med Presentation.Images-samlingen.
- Slutligen, skaffa typ och format för varje bild och spara den.
Följande kodexempel visar hur man extraherar bilder från en PowerPoint PPT i C#.
// Ladda presentationen
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_";
// Gå igenom bilder
foreach (var image in pres.Images)
{
// Skaffa bildformat
format = GetImageFormat(image.ContentType);
// Hämta bildtyp
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Spara bild
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
C# Extrahera bilder från PowerPoint PPT Shapes
I olika fall kan du behöva extrahera bilder endast från formobjekten. Detta kan uppnås genom att följa stegen nedan.
- Använd först klassen Presentation för att ladda presentationsfilen.
- Använd sedan samlingen Presentation.Slides för att gå igenom bilderna.
- För varje bild kommer du åt dess former med ISlide.Shapes-samlingen.
- Utför följande steg för varje form i samlingen:
- Om formen är en automatisk form och den är fylld med en bild, extrahera bilden med egenskapen IShape.FillFormat.PictureFillFormat.Picture.Image.
- Om formen är en bildram, extrahera bilden med egenskapen IPictureFrame.PictureFormat.Picture.Image.
- Slutligen sparar du bilden som en fil.
Följande kodexempel visar hur man extraherar bilder från former i en PowerPoint PPT med C#.
// Ladda presentationen
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Slinga genom diabilder
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Få åtkomst till rutschkanan
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Slinga genom formerna
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Få tillgång till formen
IShape sh = slide.Shapes[j];
// Kontrollera om det är en autoform
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// Kolla om den har bild
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Få bild
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Om formen är en bildram
IPictureFrame pf = (IPictureFrame)sh;
// Kontrollera om den innehåller en bild
if (pf.FillFormat.FillType == FillType.Picture)
{
// Få bild
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Om bilden hittas spara den
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
C# PowerPoint-bildextraktion från bildbakgrunder
Ett annat möjligt scenario kan vara att extrahera bilder som endast används som bildbakgrunder. Följande steg visar hur man extraherar PPT-bildbakgrundsbilder i C#.
- Ladda först PPT/PPTX-filen med klassen Presentation.
- Gå sedan igenom bilderna i presentationen med samlingen Presentation.Slides.
- Utför följande steg för varje bild:
- Kontrollera om bilden har en bakgrundsbild med egenskapen ISlide.Background.FillFormat.FillType.
- Om bakgrunden har en bild, extrahera bilden med egenskapen Background.FillFormat.PictureFillFormat.Picture.Image.
- Kontrollera om layoutbilden har en bakgrundsbild med egenskapen LayoutSlide.Background.FillFormat.FillType.
- Om layoutbildens bakgrund är fylld med en bild, extrahera den med egenskapen ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Slutligen, spara den extraherade bilden som en fil.
Följande kodexempel visar hur man extraherar bilder från PPT-bildbakgrunder i C#.
// Ladda presentationen
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++;
// Gå till rutschkanan
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Kontrollera om bakgrunden har bild
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Få bild
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Ställ in bildformat
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Spara bild
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Få bakgrundsbild
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Ställ in bildformat
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Spara bild
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Vi har använt metoden GetImageFormat i alla ovanstående kodsnuttar. Denna metod returnerar lämpligt bildformat för den angivna typen. Implementeringen av denna metod ges nedan.
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;
}
C# PPT Image Extraction API - Skaffa en gratis licens
Du kan få en gratis tillfällig licens och extrahera bilder från PPT-bilder utan utvärderingsbegränsningar.
Slutsats
I den här artikeln har du lärt dig hur du extraherar bilder från PowerPoint PPT i C#. Med hjälp av kodprover har vi demonstrerat hur man extraherar bilder från former och bildbakgrunder. Du kan utforska mer om Aspose.Slides för .NET genom att besöka dokumentationen. Du kan också ställa dina frågor via vårt forum.