繁体   English   中英

从 Aspose.slide java 替换图像时出错

[英]Error in replacing image from Aspose.slide java

错误 :-

警告:发生了非法反射访问操作警告:com.aspose.slides.ms.core.System.Drawing.imagecodecs.jpeg.oracle.OracleJpegImageReader 的非法反射访问(文件:/home/prdxn70/.m2/repository/com /aspose/aspose-slides/19.7/aspose-slides-19.7-jdk16.jar) 到字段 com.sun.imageio.plugins.jpeg.JPEGImageReader.colorSpaceCode 警告:请考虑将此报告给 com.aspose.slides 的维护者。 ms.core.System.Drawing.imagecodecs.jpeg.oracle.OracleJpegImageReader 警告:使用 --illegal-access=warn 启用对进一步非法反射访问操作的警告 警告:所有非法访问操作将在未来版本中被拒绝


问题 1:我创建了 pptx,并且在一张幻灯片中有 2 个相同的图像。 当我试图替换一个图像时,图像都被替换并且它抛出了警告消息。

问题 2:我创建了 pptx 并且它有 2 个图像,一段时间后我在第 2 个位置添加了第 3 个图像,我正在尝试替换它。 它正在替换第三个位置的图像。

我正在尝试下面的代码..

public static void main(String[] args) throws FileNotFoundException {

    String dataDir = "/home/prdxn70/eclipse-workspace/ppt/src/main/resources/com/demo/ppt/App/";

    try {
        //Instantiate the presentation
        Presentation presentation = new Presentation(dataDir + "two.pptx");

        //Read image from source
        File file = new File(dataDir + "img2.png");
        byte[]data = new byte[(int) file.length()];

        InputStream inputStream = null;

        try {
            inputStream = new FileInputStream(file);
            inputStream.read(data);

            // Instantiate SlideCollection calss ISlideCollection slds =
            presentation.getSlides(); // Get the first slide ISlide sld = (ISlide)
            presentation.getSlides().get_Item(0);
        } finally {
            inputStream.close();
        }
        //Code for replace Image
        IPPImage oldImage = presentation.getImages().get_Item(0);
        System.out.println(oldImage);
        oldImage.replaceImage(data);

        //Save the presentation
        presentation.save(dataDir + "HelloWorld.pptx", SaveFormat.Pptx);
    } catch (Exception e) {
        System.out.println(e);
    }

pptx链接:-

https://drive.google.com/open?id=15NSxAHi311q8Hg3lJn4i8HrOkYOg_THT

对于您的以下问题:

问题 1:我创建了 pptx,并且在一张幻灯片中有 2 个相同的图像。 当我试图替换一个图像时,图像都被替换并且它抛出了警告消息。

这不是问题。 实际上,演示中的图像实际上是添加到演示图像集合中的。 因此,如果您添加两个相似的图像,API 将只保留其中一个并避免重复。 因此,如果两个或多个形状共享相同的图像,那么在后端,图像集合中有单个图像供它们使用。 此外,当您将图像添加到演示文稿时,您首先将图像添加到 ImageCollection,然后根据需要将该添加的图像关联到一个或多个形状。 因此,这不是问题,如果您想采用这种方法,那么您的图像必须略有不同。 否则,Aspose.Slides 会将它们视为相似图像。 因此,当您更改图像时,与该图像关联的所有形状都将替换图像。 这不是问题。

问题 2:我创建了 pptx 并且它有 2 个图像,一段时间后我在第 2 个位置添加了第 3 个图像,我正在尝试替换它。 它正在替换第三个位置的图像。

我使用 Aspose.Slides for Java 19.7 处理了您共享的源文件,但无法观察到问题。 我还与您分享了我生成的结果以供您参考。

我在 Aspose 担任支持开发人员/传播者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM