有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从PDF中提取java无损图像

我正在使用PDFBox从PDF文件中提取图像,并将其提供给另一个图像处理库(可以处理不同的图像格式)。我当前的代码如下:

PDImageXObject pdImage;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedImage image = pdImage.getImage();
ImageIO.write(image, "png", baos);
byte[] imageBytes = baos.toByteArray();

这将获取存储在PDF文件中的任何内容,并使用Java图形将其转换为PNG。有没有更好的方法来避免转换并以嵌入的任何格式提取图像?我不想降低图像质量(我想可以通过使用PNG之类的无损格式来缓解)并产生转换开销


共 (1) 个答案

  1. # 1 楼答案

    flateCode过滤器和PNG文件格式使用DEFLATE算法。然而,扁平编码压缩数据流本身并不是PNG文件

    此外,还需要考虑图像XObjor(例如DeVICECMK)的颜色空间表示,而不是PNG实际支持的。p>

    通过对输出图像文件进行无损压缩,您不会丢失任何信息。(请确保您确实需要无损提取的图像,通常人们认为有损压缩意味着他们的图像现在会有太多的变化,以至于无法识别。尽管在许多情况下,根据参数的不同,损失肉眼几乎看不到,您可以从有损压缩的尺寸节省中获益。)

    如果性能缓慢,则可能是负责提取图像并保存图像的PDF软件的质量