2011-03-17 51 views
2

嗯,我有一张图片,我想以正确的实际大小在纸上打印并在代码中执行,但我不知道为什么此代码会缩放图片但我想要图片保留它的大小,你能帮我吗?在java中使用实际大小打印图像

非常感谢......

final Image img = new ImageIcon("C:\\check.jpg").getImage(); 
    PrinterJob printJob = PrinterJob.getPrinterJob(); 
    printJob.setPrintable(new Printable() 
    { 
     public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 
      if (pageIndex != 0) { 
       return NO_SUCH_PAGE; 
      } 
      graphics.drawImage(img, 0, 0, img.getWidth(null), img.getHeight(null), null); 
      return PAGE_EXISTS; 
     } 
    }); 
    if (printJob.printDialog()) { 
     try { 
      printJob.print(); 
     } catch (Exception prt) { 
      System.err.println(prt.getMessage()); 
     } 
    } 
+1

你怎么知道'实际尺寸'是什么? – 2011-03-17 11:54:54

+0

实际尺寸是取图像属性时的大小窗口告诉你摘要标签,宽度和高度的参数... – 2011-03-17 17:03:00

+0

你必须以某种方式获取元数据。读取图像时通常不会保留。一旦你拥有了,图像元数据并不是一件简单的事情。 – 2013-10-04 00:05:57

回答

1

这可能是因为你的形象没有正确的分辨率。谷歌“每英寸点数”或“图像分辨率”,然后看看javadoc的PageFormat,这显然使用72 dpi的分辨率。现在您应该有足够的信息来正确缩放图像。

+0

好吧,你知道我看着他们所有人,但它看起来不是关于java代码,当我在jpanel中绘制图像时,它具有原始图像大小的大小,但是当我在绘制函数中实现该代码并使用XPS Windows中的打印机图像变得更大,为什么?这是关于XPS打印机? – 2011-03-17 17:00:26

+0

@omidaskari因为你的屏幕可能是96dpi,请尝试将其缩小1.3倍,看看是否可以修复它。您可能需要一些代码才能获得屏幕dpi,因为屏幕可能不同。 – Serdalis 2013-10-03 23:36:41