วิธีเพิ่มรูปภาพลงในสไลด์ PowerPoint ด้วย Java

วิธีเพิ่มรูปภาพลงในสไลด์ PowerPoint ด้วย Java

ภาพใน Aspose.Slides FOSS จะถูกฝังเป็น picture frames ซึ่งเป็นรูปร่างที่เก็บภาพและสามารถกำหนดตำแหน่ง ปรับขนาด และจัดสไตล์ได้เช่นเดียวกับรูปร่างอื่น ๆ ข้อมูลภาพจะถูกเก็บไว้หนึ่งครั้งในคอลเลกชัน prs.getImages() และอ้างอิงโดยเฟรม


ข้อกำหนดเบื้องต้น

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

เพิ่มรูปภาพจากไฟล์

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()) {
    ISlide slide = prs.getSlides().get(0);

    // Load image into the presentation's image collection
    byte[] imageData = Files.readAllBytes(Paths.get("photo.jpg"));
    IPPImage img = prs.getImages().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);
}

ลายเซ็น addPictureFrame:

addPictureFrame(shapeType, x, y, width, height, image) -> IPictureFrame

ทุกมิติอยู่ในหน่วย points (1 point = 1/72 นิ้ว). สำหรับสไลด์มาตรฐานขนาด 10 x 7.5 นิ้ว พื้นที่พิกัดคือ 720 x 540 points.


เพิ่มรูปภาพจากสตรีม

หากคุณมีภาพอยู่แล้วในรูปแบบ InputStream (เช่น ดาวน์โหลดจาก URL หรืออ่านจากฐานข้อมูล):

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")) {
    IPPImage img = prs.getImages().addImage(fis);

    prs.getSlides().get(0).getShapes().addPictureFrame(
        ShapeType.RECTANGLE,
        200, 100, 300, 200,
        img
    );
    prs.save("logo-slide.pptx", SaveFormat.PPTX);
}

เพิ่มหลายภาพลงในสไลด์ต่าง ๆ

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()) {
    ILayoutSlide layout = prs.getSlides().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]));
        IPPImage img = prs.getImages().addImage(data);
        prs.getSlides().get(i).getShapes().addPictureFrame(
            ShapeType.RECTANGLE, 0, 0, 720, 540, img
        );
    }

    prs.save("multi-image.pptx", SaveFormat.PPTX);
}

นับจำนวนรูปภาพในงานนำเสนอที่มีอยู่

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)");
}

คอลเลกชัน prs.getImages() ถูกแชร์ทั่วทุกสไลด์: ไบต์ของภาพเดียวกันจะถูกจัดเก็บเพียงครั้งเดียวแม้ว่ากรอบรูปจะปรากฏบนหลายสไลด์ก็ตาม.


ดูเพิ่มเติม

 ภาษาไทย