استخراج الصور من أشكال العرض التقديمي
Contents
[
Hide
]
تُضاف الصور غالبًا إلى الأشكال وغالبًا ما تُستخدم كخلفيات للشرائح. تُضاف كائنات الصور من خلال IImageCollection، وهي مجموعة من كائنات IPPImage.
تتناول هذه المقالة كيفية استخراج الصور المضافة إلى العروض التقديمية.
لاستخراج صورة من عرض تقديمي، عليك أولاً تحديد موقع الصورة من خلال المرور بكل شريحة ثم المرور بكل شكل. بمجرد العثور على الصورة أو التعرف عليها، يمكنك استخراجها وحفظها كملف جديد.
void Run()
{
System::String path = u"D:\\Aspose Data\\";
//الوصول إلى العرض التقديمي
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(path + u"ExtractImages.pptx");
System::SharedPtr<Aspose::Slides::IPPImage> img;
System::SharedPtr<Aspose::Slides::IPPImage> Backimg;
int32_t slideIndex = 0;
System::String ImageType = u"";
bool ifImageFound = false;
for (int32_t i = 0; i < pres->get_Slides()->get_Count(); i++)
{
slideIndex++;
//الوصول إلى الشريحة الأولى
System::SharedPtr<ISlide> sl = pres->get_Slides()->idx_get(i);
System::SharedPtr<System::Drawing::Imaging::ImageFormat> Format = System::Drawing::Imaging::ImageFormat::get_Jpeg();
if (sl->get_Background()->get_FillFormat()->get_FillType() == Aspose::Slides::FillType::Picture)
{
//الحصول على الصورة الخلفية
Backimg = sl->get_Background()->get_FillFormat()->get_PictureFillFormat()->get_Picture()->get_Image();
//تعيين تنسيق الصورة المطلوب
ImageType = Backimg->get_ContentType();
ImageType = ImageType.Remove(0, ImageType.IndexOf(u"/") + 1);
Format = GetImageFormat(ImageType);
System::String ImagePath = path + u"BackImage_";
Backimg->get_SystemImage()->Save(ImagePath + u"Slide_" + System::Convert::ToString(slideIndex) + u"." + ImageType, Format);
}
else
{
if (sl->get_LayoutSlide()->get_Background()->get_FillFormat()->get_FillType() == Aspose::Slides::FillType::Picture)
{
//الحصول على الصورة الخلفية
Backimg = sl->get_LayoutSlide()->get_Background()->get_FillFormat()->get_PictureFillFormat()->get_Picture()->get_Image();
//تعيين تنسيق الصورة المطلوب
ImageType = Backimg->get_ContentType();
ImageType = ImageType.Remove(0, ImageType.IndexOf(u"/") + 1);
Format = GetImageFormat(ImageType);
System::String ImagePath = path + u"BackImage_Slide_" + i;
Backimg->get_SystemImage()->Save(ImagePath + u"LayoutSlide_" + System::Convert::ToString(slideIndex) + u"." + ImageType, Format);
}
}
for (int32_t j = 0; j < sl->get_Shapes()->get_Count(); j++)
{
// الوصول إلى الشكل الذي يحتوي على صورة
System::SharedPtr<IShape> sh = sl->get_Shapes()->idx_get(j);
if (System::ObjectExt::Is<AutoShape>(sh))
{
System::SharedPtr<AutoShape> ashp = System::ExplicitCast<Aspose::Slides::AutoShape>(sh);
if (ashp->get_FillFormat()->get_FillType() == Aspose::Slides::FillType::Picture)
{
img = ashp->get_FillFormat()->get_PictureFillFormat()->get_Picture()->get_Image();
ImageType = img->get_ContentType();
ImageType = ImageType.Remove(0, ImageType.IndexOf(u"/") + 1);
ifImageFound = true;
}
}
else if (System::ObjectExt::Is<PictureFrame>(sh))
{
System::SharedPtr<IPictureFrame> pf = System::ExplicitCast<Aspose::Slides::IPictureFrame>(sh);
if (pf->get_FillFormat()->get_FillType() == Aspose::Slides::FillType::Picture)
{
img = pf->get_PictureFormat()->get_Picture()->get_Image();
ImageType = img->get_ContentType();
ImageType = ImageType.Remove(0, ImageType.IndexOf(u"/") + 1);
ifImageFound = true;
}
}
//تعيين تنسيق الصورة المفضل
if (ifImageFound)
{
Format = GetImageFormat(ImageType);
System::String ImagePath = path + u"Slides\\Image_";
img->get_SystemImage()->Save(ImagePath + u"Slide_" + System::Convert::ToString(slideIndex) + u"_Shape_" + System::Convert::ToString(j) + u"." + ImageType, Format);
}
ifImageFound = false;
}
}
}
System::SharedPtr<System::Drawing::Imaging::ImageFormat> GetImageFormat(System::String ImageType)
{
System::SharedPtr<System::Drawing::Imaging::ImageFormat> Format = System::Drawing::Imaging::ImageFormat::get_Jpeg();
{
const System::String& switch_value_0 = ImageType;
do {
if (switch_value_0 == u"jpeg")
{
Format = System::Drawing::Imaging::ImageFormat::get_Jpeg();
break;
}
if (switch_value_0 == u"emf")
{
Format = System::Drawing::Imaging::ImageFormat::get_Emf();
break;
}
if (switch_value_0 == u"bmp")
{
Format = System::Drawing::Imaging::ImageFormat::get_Bmp();
break;
}
if (switch_value_0 == u"png")
{
Format = System::Drawing::Imaging::ImageFormat::get_Png();
break;
}
if (switch_value_0 == u"wmf")
{
Format = System::Drawing::Imaging::ImageFormat::get_Wmf();
break;
}
if (switch_value_0 == u"gif")
{
Format = System::Drawing::Imaging::ImageFormat::get_Gif();
break;
}
} while (false);
}
return Format;
}