ขณะประมวลผลงานนำเสนอ 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++;
}
แยกรูปภาพออกจากรูปร่างใน PPT
ในหลายกรณี คุณอาจต้องแยกรูปภาพออกจากวัตถุรูปร่างเท่านั้น สามารถทำได้โดยทำตามขั้นตอนด้านล่าง
- ขั้นแรก ใช้คลาส Presentation เพื่อโหลดไฟล์งานนำเสนอ
- จากนั้น ใช้คอลเลกชัน Presentation.Slides เพื่อเล่นสไลด์ซ้ำ
- สำหรับแต่ละสไลด์ เข้าถึงรูปร่างของสไลด์โดยใช้คอลเลกชัน ISlide.Shapes
- ทำตามขั้นตอนต่อไปนี้สำหรับแต่ละรูปร่างในคอลเลกชัน:
- หากรูปร่างเป็นรูปร่างอัตโนมัติและเต็มไปด้วยรูปภาพ ให้แยกรูปภาพโดยใช้คุณสมบัติ IShape.FillFormat.PictureFillFormat.Picture.Image
- หากรูปร่างเป็นกรอบรูป ให้แยกรูปภาพโดยใช้คุณสมบัติ IPictureFrame.PictureFormat.Picture.Image
- สุดท้ายบันทึกภาพเป็นไฟล์
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกรูปภาพออกจากรูปร่างใน 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# จากพื้นหลังสไลด์ PPTX
อีกสถานการณ์หนึ่งที่เป็นไปได้อาจเป็นการแยกรูปภาพที่ใช้เป็นพื้นหลังสไลด์เท่านั้น ขั้นตอนต่อไปนี้แสดงวิธีการแยกภาพพื้นหลังของสไลด์ใน 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# PowerPoint PPT Image Extraction API - รับใบอนุญาตฟรี
คุณสามารถรับ ใบอนุญาตชั่วคราวฟรี เพื่อใช้ Aspose.Slides for .NET โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีแยกรูปภาพจาก PowerPoint PPT ใน C# ด้วยความช่วยเหลือของตัวอย่างโค้ด เราได้สาธิตวิธีแยกรูปภาพออกจากรูปร่างและพื้นหลังของสไลด์ คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ Aspose.Slides for .NET ได้โดยไปที่ เอกสารประกอบ นอกจากนี้ คุณสามารถถามคำถามผ่าน ฟอรัม ของเรา