العمل مع الصور في العروض التقديمية — Aspose.Slides FOSS for Java

Aspose.Slides FOSS for Java يتيح لك تضمين الصور في مجموعة الصور المشتركة للعرض وعرضها على الشرائح باستخدام أشكال PictureFrame. يمكن أيضًا استخدام الصور كملء خلفية للأشكال عبر FillType.PICTURE.


إضافة صورة من ملف

حمّل بايتات الصورة من القرص وأضفها إلى مجموعة صور العرض باستخدام prs.getImages().addImage(). ثم ضع الصورة على شريحة كـ PictureFrame:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;

try (Presentation prs = new Presentation()) {
    // Add the image to the shared collection
    byte[] imageData = Files.readAllBytes(Path.of("logo.png"));
    var img = prs.getImages().addImage(imageData);

    // Place it on the slide as a PictureFrame
    var slide = prs.getSlides().get(0);
    slide.getShapes().addPictureFrame(ShapeType.RECTANGLE, 50, 50, 300, 200, img);

    prs.save("with-image.pptx", SaveFormat.PPTX);
}

الأربعة وسائط موضعية إلى addPictureFrame() هي: x, y, width, height بالنقاط.


إضافة صورة من بايتات

إذا كان لديك بالفعل بايتات الصورة (مثلًا، تم تنزيلها من عنوان URL أو قرأتها من قاعدة بيانات)، فمرّرها مباشرةً إلى addImage():

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;

// Simulate having bytes in memory
byte[] imageBytes = Files.readAllBytes(Path.of("photo.jpg"));

try (Presentation prs = new Presentation()) {
    var img = prs.getImages().addImage(imageBytes);
    prs.getSlides().get(0).getShapes().addPictureFrame(ShapeType.RECTANGLE, 100, 80, 400, 250, img);
    prs.save("from-bytes.pptx", SaveFormat.PPTX);
}

تحديد الموقع وتغيير حجم إطار الصورة

تُورّث PictureFrame التي تم إرجاعها بواسطة addPictureFrame() جميع خصائص الهندسة Shape ويمكن إعادة وضعها بعد الإنشاء:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;

try (Presentation prs = new Presentation()) {
    byte[] imageData = Files.readAllBytes(Path.of("photo.jpg"));
    var img = prs.getImages().addImage(imageData);

    var pf = prs.getSlides().get(0).getShapes().addPictureFrame(ShapeType.RECTANGLE, 0, 0, 100, 100, img);

    // Reposition and resize after creation
    pf.setX(50);
    pf.setY(100);
    pf.setWidth(350);
    pf.setHeight(250);

    prs.save("positioned.pptx", SaveFormat.PPTX);
}

استخدام صورة كملء شكل

يمكن لأي شكل (ليس فقط PictureFrame) أن يستخدم صورة كملء خلفية. اضبط FillType.PICTURE وعيّن الصورة إلى getPictureFillFormat().getPicture().setImage():

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.PictureFillMode;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;

try (Presentation prs = new Presentation()) {
    byte[] imageData = Files.readAllBytes(Path.of("background.png"));
    var img = prs.getImages().addImage(imageData);

    var slide = prs.getSlides().get(0);
    var shape = slide.getShapes().addAutoShape(ShapeType.ROUND_CORNER_RECTANGLE, 50, 50, 400, 250);
    shape.getFillFormat().setFillType(FillType.PICTURE);
    shape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.STRETCH);
    shape.getFillFormat().getPictureFillFormat().getPicture().setImage(img);

    prs.save("picture-fill.pptx", SaveFormat.PPTX);
}

PictureFillMode.STRETCH يوسّع الصورة لتملأ الشكل بالكامل. استخدم TILE للأنماط المتكررة.


إضافة صور متعددة عبر الشرائح

يتم مشاركة الصور المضافة إلى prs.getImages() عبر جميع الشرائح. يمكن استخدام نفس كائن IPPImage على شرائح متعددة دون تكرار البيانات:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;

try (Presentation prs = new Presentation()) {
    byte[] logoData = Files.readAllBytes(Path.of("logo.png"));
    var logo = prs.getImages().addImage(logoData);

    // Add the same image to the first slide
    prs.getSlides().get(0).getShapes().addPictureFrame(ShapeType.RECTANGLE, 600, 10, 100, 40, logo);

    prs.save("shared-image.pptx", SaveFormat.PPTX);
}

انظر أيضًا

 العربية