繁体   English   中英

从PDF提取无损图像

[英]Lossless image extraction from PDF

我正在使用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文件。

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

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

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

暂无
暂无

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

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