إطار الصورة

إطار الصورة هو شكل يحتوي على صورة، إنه مثل صورة داخل إطار.

يمكنك إضافة صورة إلى شريحة من خلال إطار الصورة. بهذه الطريقة، يمكنك تنسيق الصورة من خلال تنسيق إطار الصورة.

إنشاء إطار صورة

  1. قم بإنشاء مثيل من فئة Presentation.
  2. احصل على مرجع الشريحة من خلال فهرسها.
  3. قم بإنشاء كائن IPPImage عن طريق إضافة صورة إلى IImagescollection المرتبطة بكائن العرض الذي سيتم استخدامه لملء الشكل.
  4. حدد عرض الصورة وارتفاعها.
  5. قم بإنشاء PictureFrame بناءً على عرض الصورة وارتفاعها من خلال طريقة AddPictureFrame التي تم توفيرها بواسطة كائن الشكل المرتبط بالشريحة المرجعية.
  6. أضف إطار صورة (يحتوي على الصورة) إلى الشريحة.
  7. اكتب العرض المعدل كملف PPTX.

يوضح كود C# هذا كيفية إنشاء إطار صورة:

// ينشئ مثيل من فئة Presentation التي تمثل ملف PPTX
using (Presentation pres = new Presentation())
{
    // يحصل على الشريحة الأولى
    ISlide slide = pres.Slides[0];

    // يحمل صورة ويضيفها إلى مجموعة صور العرض
    IImage image = Images.FromFile("aspose-logo.jpg");
    IPPImage ppImage = pres.Images.AddImage(image);
    image.Dispose();

    // يضيف إطار صورة بنفس الارتفاع والعرض
    IPictureFrame pictureFrame = slide.Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 150, ppImage.Width, ppImage.Height, ppImage);

    // يطبق بعض التنسيق على إطار الصورة
    pictureFrame.LineFormat.FillFormat.FillType = FillType.Solid;
    pictureFrame.LineFormat.FillFormat.SolidFillColor.Color = Color.Blue;
    pictureFrame.LineFormat.Width = 20;
    pictureFrame.Rotation = 45;

    // يكتب العرض إلى ملف PPTX
    pres.Save("RectPicFrameFormat_out.pptx", SaveFormat.Pptx);
}

إنشاء إطار صورة بمقياس نسبي

من خلال تغيير تدرج الصورة النسبي، يمكنك إنشاء إطار صورة أكثر تعقيدًا.

  1. قم بإنشاء مثيل من فئة Presentation.
  2. احصل على مرجع الشريحة من خلال فهرسها.
  3. أضف صورة إلى مجموعة صور العرض.
  4. قم بإنشاء كائن IPPImage عن طريق إضافة صورة إلى IImagescollection المرتبطة بكائن العرض الذي سيتم استخدامه لملء الشكل.
  5. حدد عرض الصورة وارتفاعها النسبي في إطار الصورة.
  6. اكتب العرض المعدل كملف PPTX.

يوضح كود C# هذا كيفية إنشاء إطار صورة بمقياس نسبي:

// ينشئ مثيل من فئة Presentation التي تمثل ملف PPTX
using (Presentation presentation = new Presentation())
{
    // يحمل صورة ويضيفها إلى مجموعة صور العرض
    IImage image = Images.FromFile("aspose-logo.jpg");
    IPPImage ppImage = presentation.Images.AddImage(image);
    image.Dispose();

    // يضيف إطار صورة إلى الشريحة
    IPictureFrame pictureFrame = presentation.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, ppImage);

    // يحدد عرض وارتفاع المقياس النسبي
    pictureFrame.RelativeScaleHeight = 0.8f;
    pictureFrame.RelativeScaleWidth = 1.35f;

    // يحفظ العرض
    presentation.Save("إضافة إطار صورة بمقياس نسبي_out.pptx", SaveFormat.Pptx);
}

استخراج صورة من إطار الصورة

يمكنك استخراج الصور من كائنات PictureFrame وحفظها في تنسيقات PNG وJPG وتنسيقات أخرى. توضح مثال الشفرة أدناه كيفية استخراج صورة من الوثيقة “sample.pptx” وحفظها بتنسيق PNG.

using (var presentation = new Presentation("sample.pptx"))
{
    var firstSlide = presentation.Slides[0];
    var firstShape = firstSlide.Shapes[0];

    if (firstShape is IPictureFrame pictureFrame)
    {
        var image = pictureFrame.PictureFormat.Picture.Image.SystemImage;
        image.Save("slide_1_shape_1.png", ImageFormat.Png);
    }
}

الحصول على شفافية الصورة

تسمح لك Aspose.Slides بالحصول على شفافية الصورة. يوضح كود C# هذا العملية:

using (var presentation = new Presentation(folderPath + "Test.pptx"))
{
    var pictureFrame = (IPictureFrame)presentation.Slides[0].Shapes[0];
    var imageTransform = pictureFrame.PictureFormat.Picture.ImageTransform;
    foreach (var effect in imageTransform)
    {
        if (effect is IAlphaModulateFixed alphaModulateFixed)
        {
            var transparencyValue = 100 - alphaModulateFixed.Amount;
            Console.WriteLine("شفافية الصورة: " + transparencyValue);
        }
    }
}

تنسيق إطار الصورة

تقدم Aspose.Slides العديد من خيارات التنسيق التي يمكن تطبيقها على إطار الصورة. باستخدام هذه الخيارات، يمكنك تعديل إطار الصورة ليتناسب مع متطلبات محددة.

  1. قم بإنشاء مثيل من فئة Presentation .
  2. احصل على مرجع الشريحة من خلال فهرسها.
  3. قم بإنشاء كائن IPPImage عن طريق إضافة صورة إلى IImagescollection المرتبطة بكائن العرض الذي سيتم استخدامه لملء الشكل.
  4. حدد عرض الصورة وارتفاعها.
  5. قم بإنشاء PictureFrame بناءً على عرض الصورة وارتفاعها من خلال طريقة AddPictureFrame التي تم توفيرها بواسطة كائن IShapes المرتبط بالشريحة المرجعية.
  6. أضف إطار الصورة (الذي يحتوي على الصورة) إلى الشريحة.
  7. حدد لون خط إطار الصورة.
  8. حدد عرض خط إطار الصورة.
  9. قم بتدوير إطار الصورة بإعطائه قيمة إيجابية أو سلبية.
    • القيمة الإيجابية تدور الصورة في اتجاه عقارب الساعة.
    • القيمة السلبية تدور الصورة عكس اتجاه عقارب الساعة.
  10. أضف إطار الصورة (الذي يحتوي على الصورة) إلى الشريحة.
  11. اكتب العرض المعدل كملف PPTX.

يوضح كود C# هذا عملية تنسيق إطار الصورة:

// ينشئ مثيل من فئة Presentation التي تمثل ملف PPTX
using (Presentation presentation = new Presentation())
{
    // يحصل على الشريحة الأولى
    ISlide slide = presentation.Slides[0];

    // يحمل صورة ويضيفها إلى مجموعة صور العرض
    IImage image = Images.FromFile("aspose-logo.jpg");
    IPPImage ppImage = presentation.Images.AddImage(image);
    image.Dispose();

    // يضيف إطار صورة بأبعاد الصورة المتساوية
    IPictureFrame pictureFrame = slide.Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 150, ppImage.Width, ppImage.Height, ppImage);

    // يطبق بعض التنسيق على إطار الصورة
    pictureFrame.LineFormat.FillFormat.FillType = FillType.Solid;
    pictureFrame.LineFormat.FillFormat.SolidFillColor.Color = Color.Blue;
    pictureFrame.LineFormat.Width = 20;
    pictureFrame.Rotation = 45;

    // يكتب العرض إلى ملف PPTX
    presentation.Save("RectPicFrameFormat_out.pptx", SaveFormat.Pptx);
}

إضافة صورة كرابط

لتجنب أحجام العروض الكبيرة، يمكنك إضافة صور (أو مقاطع فيديو) من خلال روابط بدلاً من إدخال الملفات مباشرة في العروض. يظهر كود C# هذا كيفية إضافة صورة وفيديو إلى عنصر نائب:

using (var presentation = new Presentation("input.pptx"))
{
    var shapesToRemove = new List<IShape>();
    int shapesCount = presentation.Slides[0].Shapes.Count;

    for (var i = 0; i < shapesCount; i++)
    {
        var autoShape = presentation.Slides[0].Shapes[i];

        if (autoShape.Placeholder == null)
        {
            continue;
        }

        switch (autoShape.Placeholder.Type)
        {
            case PlaceholderType.Picture:
                var pictureFrame = presentation.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle,
                        autoShape.X, autoShape.Y, autoShape.Width, autoShape.Height, null);

                pictureFrame.PictureFormat.Picture.LinkPathLong =
                    "https://upload.wikimedia.org/wikipedia/commons/3/3a/I.M_at_Old_School_Public_Broadcasting_in_October_2016_02.jpg";

                shapesToRemove.Add(autoShape);
                break;

            case PlaceholderType.Media:
                var videoFrame = presentation.Slides[0].Shapes.AddVideoFrame(
                    autoShape.X, autoShape.Y, autoShape.Width, autoShape.Height, "");

                videoFrame.PictureFormat.Picture.LinkPathLong =
                    "https://upload.wikimedia.org/wikipedia/commons/3/3a/I.M_at_Old_School_Public_Broadcasting_in_October_2016_02.jpg";

                videoFrame.LinkPathLong = "https://youtu.be/t_1LYZ102RA";

                shapesToRemove.Add(autoShape);
                break;
        }
    }

    foreach (var shape in shapesToRemove)
    {
        presentation.Slides[0].Shapes.Remove(shape);
    }

    presentation.Save("output.pptx", SaveFormat.Pptx);
}

قص الصورة

يوضح كود C# هذا كيفية قص صورة موجودة على شريحة:

using (Presentation presentation = new Presentation())
{
    // ينشئ كائن صورة جديدة
    IImage image = Images.FromFile(imagePath);
    IPPImage newImage = presentation.Images.AddImage(image);
    image.Dispose();

    // يضيف إطار صورة إلى شريحة
    IPictureFrame picFrame = presentation.Slides[0].Shapes.AddPictureFrame(
        ShapeType.Rectangle, 100, 100, 420, 250, newImage);

    // يقص الصورة (قيمة النسبة المئوية)
    picFrame.PictureFormat.CropLeft = 23.6f;
    picFrame.PictureFormat.CropRight = 21.5f;
    picFrame.PictureFormat.CropTop = 3;
    picFrame.PictureFormat.CropBottom = 31;

    // يحفظ النتيجة
    presentation.Save("PictureFrameCrop.pptx", SaveFormat.Pptx);
}

حذف المناطق المقصوصة من الصورة

إذا كنت ترغب في حذف المناطق المقصوصة من صورة موجودة في إطار، يمكنك استخدام طريقة IPictureFillFormat.DeletePictureCroppedAreas. تعيد هذه الطريقة الصورة المقصوصة أو الصورة الأصلية إذا كان القص غير ضروري.

يظهر كود C# هذا العملية:

using (Presentation presentation = new Presentation("PictureFrameCrop.pptx"))
{
    ISlide slide = presentation.Slides[0];

    // يحصل على إطار الصورة من الشريحة الأولى
    IPictureFrame picFrame = slide.Shapes[0] as IPictureFrame;

    // يحذف المناطق المقصوصة من صورة إطار الصورة ويعيد الصورة المقصوصة
    IPPImage croppedImage = picFrame.PictureFormat.DeletePictureCroppedAreas();

    // يحفظ النتيجة
    presentation.Save("PictureFrameDeleteCroppedAreas.pptx", SaveFormat.Pptx);
}

قفل نسبة العرض إلى الارتفاع

إذا كنت ترغب في أن يحتفظ الشكل الذي يحتوي على صورة بنسبة العرض إلى الارتفاع حتى بعد تغيير أبعاد الصورة، يمكنك استخدام خاصية IPictureFrameLock.AspectRatioLocked لضبط إعداد قفل نسبة العرض إلى الارتفاع.

يوضح كود C# هذا كيفية قفل نسبة العرض إلى الارتفاع لشكل:

using (Presentation pres = new Presentation("pres.pptx"))
{
    ILayoutSlide layout = pres.LayoutSlides.GetByType(SlideLayoutType.Custom);
    ISlide emptySlide = pres.Slides.AddEmptySlide(layout);

    IImage image = Images.FromFile("image.png");
    IPPImage presImage = pres.Images.AddImage(image);
    image.Dispose();

    IPictureFrame pictureFrame = emptySlide.Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 150, presImage.Width, presImage.Height, presImage);

    // يعين الشكل للاحتفاظ بنسبة العرض إلى الارتفاع عند تغيير الحجم
    pictureFrame.PictureFrameLock.AspectRatioLocked = true;
}

استخدام خاصية StretchOff

باستخدام الخصائص StretchOffsetLeft، StretchOffsetTop، StretchOffsetRight, وStretchOffsetBottom من واجهة IPictureFillFormat وفئة PictureFillFormat، يمكنك تحديد مستطيل التعبئة.

عند تحديد التمديد لصورة، يتم توسيع مستطيل المصدر ليتناسب مع مستطيل التعبئة المحدد. يتم تعريف كل حافة من مستطيل التعبئة بنسيج مئوي من الحافة المقابلة لصندوق الحدود للشكل. تحدد النسبة المئوية الإيجابية نطاقًا في حين تحدد النسبة المئوية السلبية نطاقًا خارجيًا.

  1. قم بإنشاء مثيل من فئة Presentation .
  2. احصل على مرجع الشريحة من خلال فهرسها.
  3. أضف شكل مستطيل AutoShape.
  4. قم بإنشاء صورة.
  5. اضبط نوع تعبئة الشكل.
  6. اضبط وضع تعبئة الصورة للشكل.
  7. أضف صورة محددة لملء الشكل.
  8. حدد تعويضات الصورة من الحافة المقابلة لصندوق الحدود للشكل.
  9. اكتب العرض المعدل كملف PPTX.

يوضح كود C# هذا عملية تستخدم فيها خاصية StretchOff:

using (Presentation pres = new Presentation())
{
    IImage image = Images.FromFile("image.png");
    IPPImage ppImage = pres.Images.AddImage(image);
    image.Dispose();

    IPictureFrame pictureFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 10, 10, 400, 400, ppImage);

    // يحدد الصورة المنبثقة من كل جانب في جسم الشكل
    pictureFrame.PictureFormat.PictureFillMode = PictureFillMode.Stretch;
    pictureFrame.PictureFormat.StretchOffsetLeft = 24;
    pictureFrame.PictureFormat.StretchOffsetRight = 24;
    pictureFrame.PictureFormat.StretchOffsetTop = 24;
    pictureFrame.PictureFormat.StretchOffsetBottom = 24;

    pres.Save("imageStretch.pptx", SaveFormat.Pptx);
}