کار با تصاویر در ارائه‌ها — Aspose.Slides FOSS برای Java

Aspose.Slides FOSS for Java lets you embed images in a presentation’s shared image collection and display them on slides using 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

این 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);
}

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

 فارسی