Při zpracování prezentací PowerPoint v aplikaci .NET může být nutné extrahovat obsah ze snímků PPT. Obsah může být ve formě textu a obrázků. V předchozím příspěvku jsme se zabývali extrakcí textu ze snímků aplikace PowerPoint. V tomto článku vám ukážeme, jak extrahovat obrázky z PowerPointu PPT nebo PPTX v C#.
- C# API pro extrahování obrázků z PowerPoint PPT
- Extrahujte obrázky z PPTX v C#
- Extrahujte obrázky z tvarů v PPT
- Extrakce obrázku z pozadí snímku PPT
C# API pro extrahování obrázků z PowerPoint PPT – bezplatné stažení
Pro extrahování obrázků z PowerPoint PPT/PPTX použijeme Aspose.Slides for .NET. Jedná se o funkčně bohaté rozhraní .NET API, které vám umožňuje vytvářet nové prezentace a bezproblémově manipulovat s těmi stávajícími. Můžete si stáhnout DLL API nebo ji nainstalovat pomocí NuGet.
PM> Install-Package Aspose.Slides.NET
Extrahujte obrázky z PowerPoint PPT v C#
Následují kroky k extrahování všech obrázků v PPT prezentaci v C#.
- Nejprve použijte třídu Presentation k načtení souboru PPT/PPTX.
- Poté procházejte všechny obrázky v prezentaci pomocí kolekce Presentation.Images.
- Nakonec získejte typ a formát každého obrázku a uložte jej.
Následující ukázka kódu ukazuje, jak extrahovat obrázky z PowerPoint PPT v C#.
// Načtěte prezentaci
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_";
// Procházet obrázky
foreach (var image in pres.Images)
{
// Získejte formát obrázku
format = GetImageFormat(image.ContentType);
// Získejte typ obrázku
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Uložit obrázek
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
C# Extrahujte obrázky z PowerPoint PPT Shapes
V různých případech může být nutné extrahovat obrázky pouze z objektů tvaru. Toho lze dosáhnout pomocí následujících kroků.
- Nejprve použijte třídu Presentation k načtení souboru prezentace.
- Poté pomocí kolekce Presentation.Slides procházejte snímky.
- Pro každý snímek získáte přístup k jeho tvarům pomocí kolekce ISlide.Shapes.
- Pro každý tvar v kolekci proveďte následující kroky:
- Pokud je tvar automatický a je vyplněn obrázkem, extrahujte obrázek pomocí vlastnosti IShape.FillFormat.PictureFillFormat.Picture.Image.
- Pokud je tvar rámeček obrázku, extrahujte obrázek pomocí vlastnosti IPictureFrame.PictureFormat.Picture.Image.
- Nakonec uložte obrázek jako soubor.
Následující ukázka kódu ukazuje, jak extrahovat obrázky z obrazců v PowerPoint PPT pomocí C#.
// Načtěte prezentaci
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Procházejte snímky
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Přístup ke snímku
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Procházejte tvary
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Přístup k tvaru
IShape sh = slide.Shapes[j];
// Zkontrolujte, zda se jedná o automatický tvar
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// Zkontrolujte, zda má obrázek
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Získejte obrázek
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Pokud tvar je rám obrazu
IPictureFrame pf = (IPictureFrame)sh;
// Zkontrolujte, zda obsahuje obrázek
if (pf.FillFormat.FillType == FillType.Picture)
{
// Získejte obrázek
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Pokud je obrázek nalezen, uložte jej
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
C# PowerPoint extrakce obrázků z pozadí snímků
Dalším možným scénářem může být extrahování obrázků, které se používají pouze jako pozadí snímků. Následující kroky ukazují, jak extrahovat obrázky pozadí snímků PPT v C#.
- Nejprve načtěte soubor PPT/PPTX pomocí třídy Presentation.
- Poté procházejte snímky v prezentaci pomocí kolekce Presentation.Slides.
- Pro každý snímek proveďte následující kroky:
- Zkontrolujte, zda má snímek obrázek na pozadí pomocí vlastnosti ISlide.Background.FillFormat.FillType.
- Pokud má pozadí obrázek, extrahujte obrázek pomocí vlastnosti Background.FillFormat.PictureFillFormat.Picture.Image.
- Pomocí vlastnosti LayoutSlide.Background.FillFormat.FillType zkontrolujte, zda má snímek rozvržení obrázek na pozadí.
- Pokud je pozadí rozvržení snímku vyplněno obrázkem, extrahujte jej pomocí vlastnosti ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Nakonec uložte extrahovaný obrázek jako soubor.
Následující ukázka kódu ukazuje, jak extrahovat obrázky z pozadí snímků PPT v C#.
// Načtěte prezentaci
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++;
// Přístup ke snímku
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Zkontrolujte, zda má pozadí obrázek
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Získejte obrázek
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Nastavte formát obrázku
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Uložit obrázek
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Získejte obrázek na pozadí
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Nastavte formát obrázku
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Uložit obrázek
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Ve všech výše uvedených úryvcích kódu jsme použili metodu GetImageFormat. Tato metoda vrátí vhodný formát obrázku pro zadaný typ. Implementace této metody je uvedena níže.
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 – Získejte bezplatnou licenci
Můžete získat bezplatnou dočasnou licenci a extrahovat obrázky ze snímků PPT bez omezení hodnocení.
Závěr
V tomto článku jste se naučili, jak extrahovat obrázky z PowerPoint PPT v C#. S pomocí ukázek kódu jsme si ukázali, jak extrahovat obrázky z tvarů a pozadí snímků. Více o Aspose.Slides pro .NET můžete prozkoumat na dokumentaci. Také se můžete ptát na naše fórum.