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

这是扫描代码:

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

并制作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();

结果如下:

java - 缓冲图像色彩饱和度-LMLPHP

如您所见,PDF图像更“苍白”(饱和度?-抱歉,我不擅长色彩理论,也不知道如何正确命名)。

我发现了什么:
  • 使用JLabel将BufferedImage打印到JLabel(new ImageIcon(bimg))
    构造函数产生与PDF相同的结果(“浅”颜色)
    所以我想不是PDFBox的原因。
  • 更改扫描分辨率-
    没有效果。
  • bimg.getTransparency()返回1(OPAQUE)
  • 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

    关于java - 缓冲图像色彩饱和度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37478424/

    10-09 04:46