gpt4 book ai didi

java - 从 PDF 中无损提取图像

转载 作者:行者123 更新时间:2023-12-02 01:26:08 26 4
gpt4 key购买 nike

我正在使用 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 这样的无损格式来缓解?)并产生转换开销。

最佳答案

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

此外,您还需要考虑图像 XObject 的色彩空间表示(例如 DeviceCMYK)与 PNG 实际支持的色彩空间表示。

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

如果性能缓慢,可能只是因为负责提取图像并保存它的 PDF 软件的质量问题。

关于java - 从 PDF 中无损提取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com