프레젠테이션에서 이미지 작업 — Aspose.Slides FOSS for Java
Aspose.Slides FOSS for Java는 프레젠테이션의 공유 이미지 컬렉션에 이미지를 삽입하고 PictureFrame 도형을 사용하여 슬라이드에 표시할 수 있습니다. 이미지는 FillType.PICTURE를 통해 도형 배경 채우기로도 사용할 수 있습니다.
파일에서 이미지 추가
디스크에서 이미지 바이트를 로드하고 prs.getImages().addImage()을 사용하여 프레젠테이션의 이미지 컬렉션에 추가합니다. 그런 다음 이미지를 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);
}addPictureFrame()에 대한 네 개의 위치 인수는: x, y, width, height 포인트입니다.
바이트에서 이미지 추가
이미지 바이트가 이미 있는 경우(예: URL에서 다운로드했거나 데이터베이스에서 읽은 경우), 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);
}PictureFrame 위치 지정 및 크기 조정
addPictureFrame()에 의해 반환된 PictureFrame는 모든 Shape 기하학 속성을 상속하며 생성 후에 위치를 재조정할 수 있습니다:
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);
}이미지를 도형 채우기로 사용
모든 도형(그림 프레임에만 국한되지 않음)은 이미지를 배경 채우기로 사용할 수 있습니다. FillType.PICTURE를 설정하고 이미지를 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은 이미지를 전체 모양에 맞게 확대합니다. 반복 패턴의 경우 TILE을 사용하십시오.
슬라이드 전체에 여러 이미지 추가
prs.getImages()에 추가된 이미지는 모든 슬라이드에서 공유됩니다. 동일한 IPPImage 객체를 데이터를 복제하지 않고 여러 슬라이드에서 사용할 수 있습니다:
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);
}