BufferedImage color saturation

微笑、不失礼 提交于 2019-12-07 03:35:53

问题


I'm writing a simple scanning application using jfreesane and Apache PDFBox.

Here is the scanning code:

InetAddress address = InetAddress.getByName("192.168.0.17");
SaneSession session = SaneSession.withRemoteSane(address);
List<SaneDevice> 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();

And making 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();

And here is the result:

As you can see the PDF image is more "pale" (saturation? - sorry, I'm not good at color theory and don't know how to name it correctly).

What I have found out:

  1. Printing BufferedImage to JLabel using JLabel(new ImageIcon(bimg)) constructor produces the same result as with PDF ("pale" colors) so I guess PDFBox is not the reason.
  2. Changing scanning resolution - no effect.
  3. bimg.getTransparency() returns 1 (OPAQUE)
  4. bimg.getType() returns 0 (TYPE_CUSTOM)

PNG file:

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

PDF file

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


回答1:


There was an issue in JFreeSane with colorspaces, it was fixed in version 0.97:

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



来源:https://stackoverflow.com/questions/37478424/bufferedimage-color-saturation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!