【发布时间】:2016-09-25 11:52:50
【问题描述】:
我正在使用jfreesane 和Apache 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();
结果如下:
如您所见,PDF 图像更“苍白”(饱和度?- 抱歉,我不擅长色彩理论,也不知道如何正确命名)。
我发现了什么:
- 使用 JLabel(new ImageIcon(bimg)) 将 BufferedImage 打印到 JLabel 构造函数产生与 PDF 相同的结果(“苍白”颜色) 所以我猜 PDFBox 不是原因。
- 更改扫描分辨率 - 没有效果。
- bimg.getTransparency() 返回 1(不透明)
- 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
【问题讨论】:
-
那么正确的是什么? png还是pdf?
-
@gpasch Png 是正确的。
-
@TilmanHausherr 用链接更新了问题。
-
@VladimirM。
getColorModel()返回什么? -
@AbdulFatir ColorModel: #pixelBits = 24 numComponents = 3 颜色空间 = java.awt.color.ICC_ColorSpace@19481b2 透明度 = 1 具有 alpha = false isAlphaPre = false
标签: java colors bufferedimage pdfbox scanning