Darbas su vaizdais pristatymuose — Aspose.Slides FOSS for Java
Aspose.Slides FOSS for Java leidžia įterpti vaizdus į pristatymo bendrą vaizdų kolekciją ir rodyti juos skaidrėse naudojant PictureFrame formas. Vaizdus taip pat galima naudoti kaip formų fono užpildus per FillType.PICTURE.
Pridedamas paveikslėlis iš failo
Įkelkite vaizdo baitus iš disko ir pridėkite juos prie pristatymo vaizdų kolekcijos naudodami prs.getImages().addImage(). Tada padėkite vaizdą skaidrėje kaip 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);
}Keturi poziciniai argumentai addPictureFrame() yra: x, y, width, height taškais.
Pridėti paveikslėlį iš baitų
Jei jau turite paveikslėlio baitus (pvz., atsisiųstus iš URL arba perskaitytus iš duomenų bazės), perduokite juos tiesiogiai 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);
}Paveikslėlio rėmo pozicionavimas ir dydžio nustatymas
PictureFrame, grąžintas addPictureFrame(), paveldi visas Shape geometrijos savybes ir gali būti perkeliamas po sukūrimo:
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);
}Naudojant paveikslėlį kaip figūros užpildą
Bet kuri forma (ne tik PictureFrame) gali naudoti paveikslėlį kaip fono užpildą. Nustatykite FillType.PICTURE ir priskirkite paveikslėlį 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 keičia paveikslą, kad jis užpildytų visą formą. Naudokite TILE pakartojimams.
Pridėti kelias nuotraukas per skaidres
Į prs.getImages() pridėti vaizdai yra bendrinami visose skaidrėse. Tas pats IPPImage objektas gali būti naudojamas keliose skaidrėse be duomenų dubliavimo:
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);
}