프레젠테이션에서 이미지 작업 — Aspose.Slides FOSS for Java
Aspose.Slides FOSS for Java lets you embed images in a presentation’s shared image collection and display them on slides using PictureFrame 도형. 이미지는 도형 배경 채우기로도 사용할 수 있습니다. FillType.PICTURE.
파일에서 이미지 추가
디스크에서 이미지 바이트를 로드하고 프레젠테이션의 이미지 컬렉션에 추가합니다 with prs.getImages().addImage(). 그런 다음 이미지를 슬라이드에 as a 배치합니다. 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에서 다운로드했거나 데이터베이스에서 읽은 경우), 이를 직접 전달하십시오 to 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 위치 지정 및 크기 조정
그 PictureFrame 에 의해 반환된 addPictureFrame() 모든 것을 상속합니다 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);
}이미지를 도형 채우기로 사용하기
PictureFrame에 국한되지 않고 모든 도형은 이미지를 배경 채우기로 사용할 수 있습니다. 설정 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);
}