使用 Apache POI 替换图像不起作用

Replacing an image using Apache POI is not working

我想使用 Apache POI 替换 PPT 幻灯片中的现有图像。但要实现这一点有一些困难。任何人都可以建议如何解决这个问题,因为我对此很陌生而且我找不到任何可以帮助我的文章吗?

Aspose.Slides for Java 可以轻松地用 PowerPoint 演示文稿中的图像替换另一个图像。以下代码示例向您展示了如何执行此操作:

// Load a presentation file.
var presentation = new Presentation("input.pptx");

// Add an image to presentation resources.
var imageData = Files.readAllBytes(Paths.get("image.png"));
var newImage = presentation.getImages().addImage(imageData);

// Let's the first shape on the first slide is a picture frame.
var firstSlide = presentation.getSlides().get_Item(0);
var pictureFrame = (IPictureFrame) firstSlide.getShapes().get_Item(0);

// Replace an image with the new one.
pictureFrame.getPictureFormat().getPicture().setImage(newImage);

// Save the presentation.
presentation.save("output.pptx", SaveFormat.Pptx);

presentation.dispose();

或者,您可以使用 Aspose.Slides Cloud SDK for Java,它提供 REST-based API 来管理演示文稿。下面的代码示例向您展示了如何使用 Aspose.Slides Cloud:

更新演示文稿中的图像
var slidesApi = new SlidesApi("my_client_id", "my_client_secret");

var fileName = "example.pptx";
var slideIndex = 1;
var shapeIndex = 1;

// Get image data as a Base64 string.
var imageData = Files.readAllBytes(Paths.get("image.png"));
var imageBase64String = Base64.getEncoder().encodeToString(imageData);

// Get a picture frame.
var pictureFrame = (PictureFrame)slidesApi.getShape(fileName, slideIndex, shapeIndex, null, null, null);

// Update the image data.
pictureFrame.setPictureFillFormat(new PictureFill());
pictureFrame.getPictureFillFormat().setBase64Data(imageBase64String);

// Update the picture frame.
slidesApi.updateShape(fileName, slideIndex, shapeIndex, pictureFrame, null, null, null);

我在 Aspose 担任支持开发人员。