Como adicionar imagens a slides do PowerPoint no Java
Este guia mostra como adicionar imagens para slides do PowerPoint usando Aspose.Slides FOSS for Java. Imagens são incorporadas como quadros de imagem chamando o slide.getShapes().addPictureFrame().Os dados de imagem são armazenados uma vez no sistema de informação. prs.getImages() coleção e referenciada pelo quadro.
Precondições
Adicione a seguinte dependência ao seu pom.xml para incluir a biblioteca FOSS Aspose.Slides:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>26.7.0</version>
</dependency>Adicionar uma imagem de um arquivo
Leia os bytes da imagem com: Files.readAllBytes(), adicioná-los à coleção de imagens da apresentação com: prs.getImages().addImage(), e depois liga-os a um slide com addPictureFrame():
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;
try (Presentation prs = new Presentation()) {
ISlideCollection slides = prs.getSlides();
ISlide slide = slides.get(0);
// Load image into the presentation's image collection
byte[] imageData = Files.readAllBytes(Paths.get("photo.jpg"));
IImageCollection images = prs.getImages();
IPPImage img = images.addImage(imageData);
// Add a picture frame at (x=50, y=50, width=400, height=300) in points
IPictureFrame frame = slide.getShapes().addPictureFrame(
ShapeType.RECTANGLE,
50, 50, 400, 300,
img
);
prs.save("with-image.pptx", SaveFormat.PPTX);
}A Comissão addPictureFrame() O método aceita o tipo de forma, a posição (x, y), as dimensões (largura, altura em pontos) e a IPPImage A sua assinatura completa:
addPictureFrame(shapeType, x, y, width, height, image) -> IPictureFrameTodas as dimensões estão em: pontos de (1 ponto = 1/72 polegada) Para um slide padrão de 10 x 7,5 polegadas, o espaço coordenado é 720 x 540 pontos.
Adicionar uma imagem de um fluxo
Se já tiver a imagem como um InputStream (por exemplo, baixado a partir de uma URL ou lido a contar com um banco de dados):
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.io.FileInputStream;
try (Presentation prs = new Presentation();
FileInputStream fis = new FileInputStream("logo.png")) {
IImageCollection images = prs.getImages();
IPPImage img = images.addImage(fis);
prs.getSlides().get(0).getShapes().addPictureFrame(
ShapeType.RECTANGLE,
200, 100, 300, 200,
img
);
prs.save("logo-slide.pptx", SaveFormat.PPTX);
}Adicionar várias imagens a diferentes slides
Criar um slide por imagem chamando prs.getSlides().addEmptySlide(), em seguida, incorporar cada imagem no slide correspondente usando addPictureFrame():
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;
String[] imageFiles = {"slide1.jpg", "slide2.jpg", "slide3.jpg"};
try (Presentation prs = new Presentation()) {
ISlideCollection slides = prs.getSlides();
ILayoutSlide layout = slides.get(0).getLayoutSlide();
// Ensure enough slides exist
while (prs.getSlides().size() < imageFiles.length) {
prs.getSlides().addEmptySlide(layout);
}
for (int i = 0; i < imageFiles.length; i++) {
if (!Files.exists(Paths.get(imageFiles[i]))) continue;
byte[] data = Files.readAllBytes(Paths.get(imageFiles[i]));
IImageCollection images = prs.getImages();
IPPImage img = images.addImage(data);
prs.getSlides().get(i).getShapes().addPictureFrame(
ShapeType.RECTANGLE, 0, 0, 720, 540, img
);
}
prs.save("multi-image.pptx", SaveFormat.PPTX);
}Conte imagens em uma apresentação existente
Carregar uma apresentação existente e usar prs.getImages().size() para contar as imagens incorporadas:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation("with-image.pptx")) {
System.out.println("Presentation contains "
+ prs.getImages().size() + " image(s)");
}A Comissão prs.getImages() A coleção é compartilhada em todos os slides: os mesmos bytes de imagem são armazenados uma vez, mesmo que a moldura da imagen apareça em vários slates.