Podczas przetwarzania prezentacji programu PowerPoint w aplikacji .NET może być konieczne wyodrębnienie zawartości ze slajdów PPT. Treść może mieć postać tekstu i obrazów. W poprzednim poście omówiliśmy wyodrębnianie tekstu ze slajdów programu PowerPoint. W tym artykule pokażemy, jak wyodrębnić obrazy z programu PowerPoint PPT lub PPTX w języku C#.
- C# API do wyodrębniania obrazów z programu PowerPoint PPT
- Wyodrębnij obrazy z PPTX w C#
- Wyodrębnij obrazy z kształtów w PPT
- Ekstrakcja obrazu z tła slajdu PPT
Interfejs API języka C# do wyodrębniania obrazów z programu PowerPoint PPT — bezpłatne pobieranie
Do wyodrębniania obrazów z programu PowerPoint PPT/PPTX użyjemy Aspose.Slides for .NET. Jest to bogaty w funkcje interfejs API .NET, który umożliwia tworzenie nowych prezentacji i bezproblemowe manipulowanie istniejącymi. Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.
PM> Install-Package Aspose.Slides.NET
Wyodrębnij obrazy z PowerPoint PPT w C#
Poniżej przedstawiono kroki, aby wyodrębnić wszystkie obrazy w prezentacji PPT w języku C#.
- Najpierw użyj klasy Presentation, aby załadować plik PPT/PPTX.
- Następnie przejrzyj wszystkie obrazy w prezentacji, korzystając z kolekcji Presentation.Images.
- Na koniec uzyskaj typ i format każdego obrazu i zapisz go.
Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z programu PowerPoint PPT w języku C#.
// Załaduj prezentację
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_";
// Zapętlaj obrazy
foreach (var image in pres.Images)
{
// Pobierz format obrazu
format = GetImageFormat(image.ContentType);
// Pobierz typ obrazu
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Zapisać obraz
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
Wyodrębnij obrazy z kształtów w PPT
W różnych przypadkach może być konieczne wyodrębnienie obrazów tylko z obiektów kształtu. Można to osiągnąć, wykonując poniższe czynności.
- Najpierw użyj klasy Presentation, aby załadować plik prezentacji.
- Następnie użyj kolekcji Presentation.Slides, aby przeglądać slajdy w pętli.
- Dla każdego slajdu uzyskaj dostęp do jego kształtów za pomocą kolekcji ISlide.Shapes.
- Wykonaj następujące kroki dla każdego kształtu w kolekcji:
- Jeśli kształt jest kształtem automatycznym i jest wypełniony obrazem, wyodrębnij obraz za pomocą właściwości IShape.FillFormat.PictureFillFormat.Picture.Image.
- Jeśli kształt jest ramką obrazu, wyodrębnij obraz za pomocą właściwości IPictureFrame.PictureFormat.Picture.Image.
- Na koniec zapisz obraz jako plik.
Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z kształtów w PPT przy użyciu języka C#.
// Załaduj prezentację
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Zapętlaj slajdy
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Uzyskaj dostęp do slajdu
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Zapętlaj kształty
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Uzyskaj dostęp do kształtu
IShape sh = slide.Shapes[j];
// Sprawdź, czy jest to kształt automatyczny
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// Sprawdź, czy ma obraz
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Uzyskaj obraz
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Jeśli kształt jest ramką obrazu
IPictureFrame pf = (IPictureFrame)sh;
// Sprawdź, czy zawiera obrazek
if (pf.FillFormat.FillType == FillType.Picture)
{
// Uzyskaj obraz
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Jeśli obraz zostanie znaleziony, zapisz go
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
Wyodrębnianie obrazu C# z tła slajdu PPTX
Innym możliwym scenariuszem może być wyodrębnianie obrazów, które są używane tylko jako tła slajdów. Poniższe kroki pokazują, jak wyodrębnić obrazy tła slajdu w języku C#.
- Najpierw załaduj plik PPT/PPTX przy użyciu klasy Presentation.
- Następnie przejrzyj slajdy w prezentacji, korzystając z kolekcji Presentation.Slides.
- Dla każdego slajdu wykonaj następujące czynności:
- Sprawdź, czy slajd ma obraz tła za pomocą właściwości ISlide.Background.FillFormat.FillType.
- Jeśli tło ma obraz, wyodrębnij obraz za pomocą właściwości Background.FillFormat.PictureFillFormat.Picture.Image.
- Sprawdź, czy slajd układu ma obraz tła za pomocą właściwości LayoutSlide.Background.FillFormat.FillType.
- Jeśli tło slajdu układu jest wypełnione obrazem, wyodrębnij je za pomocą właściwości ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Na koniec zapisz wyodrębniony obraz jako plik.
Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z tła slajdów w PPT w języku C#.
// Załaduj prezentację
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++;
// Uzyskaj dostęp do slajdu
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Sprawdź, czy w tle jest obrazek
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Uzyskaj obraz
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Ustaw format obrazu
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Zapisać obraz
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Uzyskaj obraz tła
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Ustaw format obrazu
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Zapisać obraz
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Użyliśmy metody GetImageFormat we wszystkich powyższych fragmentach kodu. Ta metoda zwraca odpowiedni format obrazu dla podanego typu. Implementację tej metody przedstawiono poniżej.
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# PowerPoint PPT API wyodrębniania obrazu — Uzyskaj bezpłatną licencję
Możesz uzyskać darmową tymczasową licencję na korzystanie z Aspose.Slides for .NET bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule nauczyłeś się, jak wyodrębnić obrazy z programu PowerPoint PPT w języku C#. Za pomocą przykładów kodu pokazaliśmy, jak wyodrębnić obrazy z kształtów i tła slajdów. Możesz dowiedzieć się więcej o Aspose.Slides for .NET, odwiedzając dokumentację. Możesz także zadawać pytania za pośrednictwem naszego forum.