Travailler avec des images dans les présentations — Aspose.Slides FOSS pour Java
Aspose.Slides FOSS for Java vous permet d’intégrer des images dans la collection d’images partagée d’une présentation et de les afficher sur les diapositives à l’aide de formes PictureFrame. Les images peuvent également être utilisées comme remplissages d’arrière‑plan de forme via FillType.PICTURE.
Ajout d’une image depuis un fichier
Chargez les octets d’image depuis le disque et ajoutez‑les à la collection d’images de la présentation avec prs.getImages().addImage(). Ensuite, placez l’image sur une diapositive en tant que 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);
}Les quatre arguments positionnels de addPictureFrame() sont : x, y, width, height en points.
Ajouter une image à partir d’octets
Si vous avez déjà les octets d’image (par exemple, téléchargés depuis une URL ou lus depuis une base de données), transmettez‑les directement à 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);
}Positionnement et dimensionnement d’un PictureFrame
Le PictureFrame retourné par addPictureFrame() hérite de toutes les propriétés géométriques Shape et peut être repositionné après création:
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);
}Utiliser une image comme remplissage de forme
Toute forme (pas seulement PictureFrame) peut utiliser une image comme remplissage d’arrière-plan. Définissez FillType.PICTURE et attribuez l’image à 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 redimensionne l’image pour remplir entièrement la forme. Utilisez TILE pour les motifs répétitifs.
Ajout de plusieurs images sur les diapositives
Les images ajoutées à prs.getImages() sont partagées entre toutes les diapositives. Le même objet IPPImage peut être utilisé sur plusieurs diapositives sans dupliquer les données :
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);
}