Εργασία με εικόνες σε παρουσιάσεις — 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.


Προσθήκη εικόνας από αρχείο

Φορτώστε τα bytes της εικόνας από το δίσκο και προσθέστε τα στη συλλογή εικόνων της παρουσίασης με 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 σε σημεία.


Προσθήκη εικόνας από bytes

Εάν έχετε ήδη τα bytes της εικόνας (π.χ., ληφθέντα από 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);
}

Δείτε επίσης

 Ελληνικά