Trong khi xử lý bản trình bày PowerPoint trong ứng dụng .NET, bạn có thể cần trích xuất nội dung từ các trang chiếu PPT. Nội dung có thể ở dạng văn bản và hình ảnh. Trong bài trước, chúng tôi đã đề cập đến việc trích xuất văn bản từ các trang chiếu PowerPoint. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách trích xuất hình ảnh từ PowerPoint PPT hoặc PPTX trong C#.
- API C# để trích xuất hình ảnh từ PowerPoint PPT
- Trích xuất hình ảnh từ PPTX trong C#
- Trích xuất hình ảnh từ hình dạng trong PPT
- Trích xuất hình ảnh từ nền trang trình bày PPT
API C# để trích xuất hình ảnh từ PowerPoint PPT - Tải xuống miễn phí
Để trích xuất hình ảnh từ PowerPoint PPT / PPTX, chúng tôi sẽ sử dụng Aspose.Slides for .NET. Đây là một API .NET giàu tính năng cho phép bạn tạo các bản trình bày mới và thao tác các bản trình bày hiện có một cách liền mạch. Bạn có thể [tải xuống] DLL của 5 API hoặc cài đặt nó bằng NuGet.
PM> Install-Package Aspose.Slides.NET
Trích xuất hình ảnh từ PowerPoint PPT trong C#
Sau đây là các bước để trích xuất tất cả các hình ảnh trong bản trình bày PPT trong C#.
- Đầu tiên, sử dụng lớp Trình bày để tải tệp PPT / PPTX.
- Sau đó, lặp lại tất cả các hình ảnh trong bản trình bày bằng bộ sưu tập Presentation.Images.
- Cuối cùng, lấy loại và định dạng của từng hình ảnh và lưu nó.
Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ PowerPoint PPT trong C#.
// Tải bản trình bày
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_";
// Lặp qua các hình ảnh
foreach (var image in pres.Images)
{
// Nhận định dạng hình ảnh
format = GetImageFormat(image.ContentType);
// Nhận loại hình ảnh
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Lưu hình ảnh
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
Trích xuất hình ảnh từ hình dạng trong một PPT
Trong các trường hợp khác nhau, bạn có thể chỉ cần trích xuất hình ảnh từ các đối tượng hình dạng. Điều này có thể đạt được bằng cách làm theo các bước dưới đây.
- Đầu tiên, sử dụng lớp Trình bày để tải tệp bản trình bày.
- Sau đó, sử dụng bộ sưu tập Presentation.Slides để lặp qua các slide.
- Đối với mỗi trang trình bày, hãy truy cập các hình dạng của nó bằng bộ sưu tập ISlide.Shapes.
- Thực hiện các bước sau cho mỗi hình dạng trong bộ sưu tập:
- Nếu hình dạng là một hình dạng tự động và nó được lấp đầy bởi một hình ảnh thì hãy trích xuất hình ảnh bằng thuộc tính IShape.FillFormat.PictureFillFormat.Picture.Image.
- Nếu hình dạng là một khung ảnh thì trích xuất hình ảnh bằng thuộc tính IPictureFrame.PictureFormat.Picture.Image.
- Cuối cùng, lưu hình ảnh dưới dạng tệp.
Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ các hình dạng trong PPT bằng C#.
// Tải bản trình bày
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Lặp qua các trang trình bày
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Truy cập trang trình bày
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Lặp qua các hình dạng
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Truy cập hình dạng
IShape sh = slide.Shapes[j];
// Kiểm tra xem nó có phải là hình dạng tự động không
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// Kiểm tra xem nó có hình ảnh không
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Lấy hình
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Nếu hình dạng là một khung ảnh
IPictureFrame pf = (IPictureFrame)sh;
// Kiểm tra xem nó có chứa hình ảnh không
if (pf.FillFormat.FillType == FillType.Picture)
{
// Lấy hình
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Nếu hình ảnh được tìm thấy thì hãy lưu nó
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
Trích xuất hình ảnh C# từ Nền trang trình bày PPTX
Một tình huống có thể xảy ra khác có thể là trích xuất hình ảnh chỉ được sử dụng làm hình nền trang chiếu. Các bước sau đây trình bày cách trích xuất ảnh nền của trang chiếu trong C#.
- Đầu tiên, tải tệp PPT / PPTX bằng lớp Trình bày.
- Sau đó, lặp qua các trang trình bày trong bản trình bày bằng bộ sưu tập Presentation.Slides.
- Đối với mỗi trang trình bày, hãy thực hiện các bước sau:
- Kiểm tra xem trang chiếu có hình nền hay không bằng cách sử dụng thuộc tính ISlide.Background.FillFormat.FillType.
- Nếu nền có hình ảnh thì trích xuất hình ảnh bằng thuộc tính Background.FillFormat.PictureFillFormat.Picture.Image.
- Kiểm tra xem trang chiếu bố cục có hình nền hay không bằng cách sử dụng thuộc tính LayoutSlide.Background.FillFormat.FillType.
- Nếu nền của trang trình bày bố cục chứa đầy ảnh thì hãy giải nén nó bằng thuộc tính ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Cuối cùng, lưu hình ảnh đã trích xuất dưới dạng tệp.
Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ nền trang trình bày trong PPT trong C#.
// Tải bản trình bày
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++;
// Truy cập trang trình bày
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Kiểm tra xem nền có hình ảnh không
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Nhận hình ảnh
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Đặt định dạng hình ảnh
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Lưu hình ảnh
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Nhận hình nền
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Đặt định dạng hình ảnh
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Lưu hình ảnh
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Chúng tôi đã sử dụng phương thức GetImageFormat trong tất cả các đoạn mã ở trên. Phương thức này trả về định dạng hình ảnh thích hợp cho kiểu được cung cấp. Việc thực hiện phương pháp này được đưa ra dưới đây.
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;
}
API trích xuất hình ảnh PPT của C# PowerPoint - Nhận giấy phép miễn phí
Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng Aspose.Slides for .NET mà không có giới hạn đánh giá.
Sự kết luận
Trong bài viết này, bạn đã học cách trích xuất hình ảnh từ PowerPoint PPT trong C#. Với sự trợ giúp của các mẫu mã, chúng tôi đã trình bày cách trích xuất hình ảnh từ các hình dạng và hình nền trang chiếu. Bạn có thể khám phá thêm về Aspose.Slides for .NET bằng cách truy cập tài liệu. Ngoài ra, bạn có thể đặt câu hỏi của mình qua diễn đàn của chúng tôi.