استخراج تصاویر از پاورپوینت PPT در سی شارپ

در حین پردازش ارائه های پاورپوینت در یک برنامه دات نت، ممکن است لازم باشد محتوا را از اسلایدهای PPT استخراج کنید. محتوا می تواند به صورت متن و تصویر باشد. در پست قبلی استخراج متن از اسلایدهای پاورپوینت را پوشش داده ایم. در این مقاله نحوه استخراج تصاویر از پاورپوینت PPT یا PPTX در سی شارپ را به شما نشان خواهیم داد.

C# API برای استخراج تصاویر از PowerPoint PPT - دانلود رایگان

برای استخراج تصاویر از PowerPoint PPT/PPTX، از Aspose.Slides for .NET استفاده می کنیم. این یک API .NET غنی از ویژگی ها است که به شما امکان می دهد ارائه های جدید ایجاد کنید و ارائه های موجود را به طور یکپارچه دستکاری کنید. می توانید DLL API را دانلود یا با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.Slides.NET

استخراج تصاویر از پاورپوینت PPT در سی شارپ

مراحل زیر برای استخراج تمام تصاویر در یک ارائه PPT در سی شارپ است.

  • ابتدا از کلاس Presentation برای بارگیری فایل PPT/PPTX استفاده کنید.
  • سپس، تمام تصاویر موجود در ارائه را با استفاده از مجموعه Presentation.Images حلقه بزنید.
  • در نهایت، نوع و فرمت هر تصویر را دریافت کرده و آن را ذخیره کنید.

نمونه کد زیر نحوه استخراج تصاویر از پاورپوینت PPT در سی شارپ را نشان می دهد.

// ارائه را بارگیری کنید
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++;
}

استخراج تصاویر از Shapes در 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

یکی دیگر از سناریوهای ممکن می تواند استخراج تصاویری باشد که فقط به عنوان پس زمینه اسلاید استفاده می شوند. مراحل زیر نحوه استخراج تصاویر پس زمینه اسلاید در سی شارپ را نشان می دهد.

  • ابتدا فایل PPT/PPTX را با استفاده از کلاس Presentation بارگذاری کنید.
  • سپس، با استفاده از مجموعه Presentation.Slides از میان اسلایدهای ارائه حلقه بزنید.
  • برای هر اسلاید مراحل زیر را انجام دهید:

نمونه کد زیر نحوه استخراج تصاویر از پس‌زمینه اسلایدها در یک PPT در سی شارپ را نشان می‌دهد.

// ارائه را بارگیری کنید
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 Extraction Image API - مجوز رایگان دریافت کنید

می توانید برای استفاده از Aspose.Slides برای دات نت بدون محدودیت ارزیابی، مجوز موقت رایگان دریافت کنید.

نتیجه

در این مقاله نحوه استخراج تصاویر از پاورپوینت PPT در سی شارپ را یاد گرفتید. با کمک نمونه‌های کد، نحوه استخراج تصاویر از شکل‌ها و پس‌زمینه‌های اسلاید را نشان داده‌ایم. با مراجعه به اسناد می‌توانید درباره Aspose.Slides برای دات‌نت بیشتر کاوش کنید. همچنین، می‌توانید سؤالات خود را از طریق [تالار گفتمان22 ما بپرسید.

همچنین ببینید