Práca s obrázkami v prezentáciách — Aspose.Slides FOSS pre Java

Aspose.Slides FOSS for Java vám umožňuje vložiť obrázky do zdieľanej kolekcie obrázkov prezentácie a zobrazovať ich na snímkach pomocou PictureFrame tvarov. Obrázky je možné tiež použiť ako výplň pozadia tvarov prostredníctvom FillType.PICTURE.


Pridanie obrázka zo súboru

Načítajte bajty obrázka z disku a pridajte ich do kolekcie obrázkov prezentácie pomocou prs.getImages().addImage(). Potom umiestnite obrázok na snímku ako 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);
}

Štyri pozičné argumenty pre addPictureFrame() sú: x, y, width, height v bodoch.


Pridanie obrázka z bajtov

Ak už máte bajty obrázka (napr. stiahnuté z URL alebo načítané z databázy), odovzdajte ich priamo do 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);
}

Umiestňovanie a zmena veľkosti PictureFrame

Objekt PictureFrame vrátený addPictureFrame() dedí všetky Shape geometrické vlastnosti a môže byť po vytvorení presunutý:

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);
}

Použitie obrázka ako výplň tvaru

Akýkoľvek tvar (nie len PictureFrame) môže použiť obrázok ako výplň pozadia. Nastavte FillType.PICTURE a priraďte obrázok k 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 škáluje obrázok tak, aby vyplnil celý tvar. Použite TILE pre opakujúce sa vzory.


Pridávanie viacerých obrázkov naprieč snímkami

Obrázky pridané do prs.getImages() sú zdieľané naprieč všetkými snímkami. Ten istý objekt IPPImage môže byť použitý na viacerých snímkach bez duplikovania údajov:

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);
}

Pozri tiež

 Slovenčina