BufferedImage颜色饱和度

我正在使用jfreesane和Apache PDFBox编写一个简单的扫描应用程序。

这是扫描码:

InetAddress address = InetAddress.getByName("192.168.0.17"); SaneSession session = SaneSession.withRemoteSane(address); List devices = session.listDevices(); SaneDevice device = devices.get(0); device.open(); device.getOption("resolution").setIntegerValue(300); BufferedImage bimg = device.acquireImage(); File file = new File("test_scan.png"); ImageIO.write(bimg, "png", file); device.close(); 

并制作PDF:

 PDDocument document = new PDDocument(); float width = bimg.getWidth(); float height = bimg.getHeight(); PDPage page = new PDPage(new PDRectangle(width, height)); document.addPage(page); PDImageXObject pdimg = LosslessFactory.createFromImage(document, bimg); PDPageContentStream stream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true); stream.drawImage(pdimg, 0, 0); stream.close(); document.save(filename); document.close(); 

这是结果:

在此处输入图像描述

你可以看到PDF图像更“苍白”(饱和度? – 对不起,我不擅长色彩理论,也不知道如何正确命名)。

我发现了什么:

  1. 使用JLabel(新的ImageIcon(bimg))构造函数将BufferedImage打印到JLabel会产生与PDF相同的结果(“苍白”颜色),所以我猜PDFBox不是原因。
  2. 更改扫描分辨率 – 无效。
  3. bimg.getTransparency()返回1(OPAQUE)
  4. bimg.getType()返回0(TYPE_CUSTOM)

PNG文件:

http://s000.tinyupload.com/index.php?file_id=95648202713651192395

PDF文件

http://s000.tinyupload.com/index.php?file_id=90369236997064329368

JFreeSane中存在颜色空间的问题,它在版本0.97中得到修复:

https://github.com/sjamesr/jfreesane/releases/tag/jfreesane-0.97