Під час обробки презентацій PowerPoint у програмі .NET вам може знадобитися витягти вміст із слайдів PPT. Вміст може бути у формі тексту та зображень. У попередній публікації ми розглянули вилучення тексту зі слайдів PowerPoint. У цій статті ми покажемо вам, як видобувати зображення з PowerPoint PPT або PPTX у C#.
- C# API для вилучення зображень із PowerPoint PPT
- Видобуток зображень із PPTX у C#
- Вилучення зображень із фігур у PPT
- Вилучення зображення з фону слайда PPT
C# API для вилучення зображень із PowerPoint PPT – Безкоштовне завантаження
Для отримання зображень із PowerPoint PPT/PPTX ми будемо використовувати Aspose.Slides for .NET. Це багатофункціональний .NET API, який дозволяє легко створювати нові презентації та маніпулювати наявними. Ви можете завантажити DLL API або встановити його за допомогою NuGet.
PM> Install-Package Aspose.Slides.NET
Видобуток зображень із PowerPoint PPT на C#
Нижче наведено кроки для видобування всіх зображень у презентації PPT у C#.
- Спочатку використовуйте клас Presentation, щоб завантажити файл PPT/PPTX.
- Потім перегляньте всі зображення в презентації за допомогою колекції Presentation.Images.
- Нарешті, отримайте тип і формат кожного зображення та збережіть його.
У наведеному нижче прикладі коду показано, як видобувати зображення з PowerPoint PPT на C#.
// Завантажте презентацію
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_";
// Переглядайте зображення
foreach (var image in pres.Images)
{
// Отримати формат зображення
format = GetImageFormat(image.ContentType);
// Отримати тип зображення
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Зберегти зображення
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
C# Видобуток зображень із форм PowerPoint PPT
У різних випадках може знадобитися отримати зображення лише з об’єктів форми. Цього можна досягти, виконавши наведені нижче дії.
- Спочатку використовуйте клас Presentation, щоб завантажити файл презентації.
- Потім використовуйте колекцію Presentation.Slides для перегляду слайдів.
- Для кожного слайда отримуйте доступ до його форм за допомогою колекції ISlide.Shapes.
- Виконайте такі кроки для кожної фігури в колекції:
- Якщо фігура є автоматичною формою і вона заповнена зображенням, витягніть зображення за допомогою властивості IShape.FillFormat.PictureFillFormat.Picture.Image.
- Якщо форма є рамкою для зображення, витягніть зображення за допомогою властивості IPictureFrame.PictureFormat.Picture.Image.
- Нарешті, збережіть зображення як файл.
У наведеному нижче прикладі коду показано, як видобувати зображення з фігур у PowerPoint PPT за допомогою C#.
// Завантажте презентацію
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Переглядайте слайди
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Доступ до слайда
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Перебирайте фігури
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Доступ до форми
IShape sh = slide.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);
isImageFound = 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);
isImageFound = true;
}
}
// Якщо зображення знайдено, збережіть його
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
Вилучення зображень C# PowerPoint із фону слайда
Іншим можливим сценарієм може бути вилучення зображень, які використовуються лише як фон слайдів. Наступні кроки показують, як отримати фонові зображення слайдів PPT у C#.
- Спочатку завантажте файл PPT/PPTX за допомогою класу Presentation.
- Потім перегляньте слайди презентації за допомогою колекції Presentation.Slides.
- Для кожного слайда виконайте такі дії:
- Перевірте, чи має слайд фонове зображення, використовуючи властивість ISlide.Background.FillFormat.FillType.
- Якщо фон містить зображення, витягніть зображення за допомогою властивості Background.FillFormat.PictureFillFormat.Picture.Image.
- Перевірте, чи макет слайда має фонове зображення, використовуючи властивість LayoutSlide.Background.FillFormat.FillType.
- Якщо фон слайда макета заповнено зображенням, витягніть його за допомогою властивості ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Нарешті, збережіть видобуте зображення як файл.
У наведеному нижче прикладі коду показано, як отримати зображення з фону слайдів PPT у C#.
// Завантажте презентацію
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++;
// Доступ до слайда
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Перевірте, чи фон має зображення
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Отримати картинку
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Встановити формат зображення
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Зберегти зображення
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Отримати фонове зображення
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Встановити формат зображення
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Зберегти зображення
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Ми використовували метод GetImageFormat у всіх наведених вище фрагментах коду. Цей метод повертає відповідний формат зображення для наданого типу. Реалізація цього методу наведена нижче.
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 - Отримайте безкоштовну ліцензію
Ви можете отримати безкоштовну тимчасову ліцензію і видобувати зображення зі слайдів PPT без обмежень оцінки.
Висновок
У цій статті ви дізналися, як видобувати зображення з PowerPoint PPT на C#. За допомогою зразків коду ми продемонстрували, як видобувати зображення з фігур і фону слайдів. Ви можете дізнатися більше про Aspose.Slides for .NET, відвідавши документацію. Ви також можете поставити свої запитання через наш форум.