Como adicionar imagens a slides do PowerPoint no Java

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) -> IPictureFrame

Todas 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.


Ver também:

 Português