文档图片解析出来变模糊了,麻烦看看是什么情况

使用的是 aspose-words Java 24.2 文档图片解析出来变模糊了,麻烦看看是什么情况?
图片模糊.zip (248.2 KB)

@SalesDhorde 如果图像是光栅图像,有时可能会出现这种情况。您可以使用以下代码来避免问题:

htmlSaveOptions.setImageResolution(300);

这个值设置为300,但是会导致附件的这种图标会放的很大。有办法能使图标不变吗?
4602f6f7859a50eec60a5bfac7fc971.png (36.6 KB)

@SalesDhorde 你能把有问题的文件附在这里吗?

1111_V0.1.1_20240322.docx (45.0 KB)

@SalesDhorde
输出.zip (154.4 KB)

对我来说,使用您之前证明的代码,html 和 docx 的图像大小是一样的。但我认为,对于分辨率较低的图标,最好不要使用 “setImageResolution”,以避免质量下降。

有没有方法能判断出哪些图片是光栅图像?

@SalesDhorde 也许有一种更灵活的方法能让你如愿以偿。请将以下代码与您的文件进行核对:

public void Test throws Exception {
    Document document = new Document("输入.docx");

    HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
    // 设置图像的正确路径。
    htmlSaveOptions.setImagesFolder(getArtifactsDir());
    htmlSaveOptions.setPrettyFormat(true);
    htmlSaveOptions.setExportTocPageNumbers(true);
    htmlSaveOptions.setExportRoundtripInformation(false);

    OriginalImages imageSavingCallback = new OriginalImages();
    htmlSaveOptions.setImageSavingCallback(imageSavingCallback);

    document.save(getArtifactsDir() + "输出.html", htmlSaveOptions);

    for (Map.Entry<String, String> item : imageSavingCallback.ImageFiles.entrySet())
    {
        // 设置图像的正确路径。
        Path savedImagePath = Paths.get(getArtifactsDir() + item.getKey());
        Path originalImagePath = Paths.get(item.getValue());
        Files.delete(savedImagePath);
        Files.move(originalImagePath, savedImagePath);
    }
}

public static class OriginalImages implements IImageSavingCallback
{
    public Map<String, String> ImageFiles = new HashMap<>();

    public void imageSaving(ImageSavingArgs args) throws Exception {
        if (args.getCurrentShape().isImage())
        {
            String originalImageFile = String.format("%s.original", args.getImageFileName());

            Shape shape = (Shape)args.getCurrentShape();
            ImageSaveOptions saveOptions = new ImageSaveOptions(SaveFormat.PNG);
            saveOptions.setResolution(150);
            shape.getShapeRenderer().save(originalImageFile, saveOptions);

            ImageFiles.put(args.getImageFileName(), originalImageFile);
        }
    }
}

您可以使用 “ImageType”(图像类型)查看图像的类型。