2011-03-17 48 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