【问题标题】:print a image with actual size in java在java中打印具有实际大小的图像
【发布时间】:2011-03-17 11:33:34
【问题描述】:

好吧,我有一张图片,我想在纸上以完全实际的尺寸打印它并在下面的代码中实现,但我不知道为什么这段代码会放大图片,但我希望图片保持它的大小,你能帮我吗?

非常感谢...

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

【问题讨论】:

  • 你怎么知道“实际尺寸”是多少?
  • 实际大小是在获取图像窗口的属性时在摘要选项卡中告诉您的大小,宽度和高度 pal ...
  • 您必须以某种方式获取元数据。读取图像时通常不会保留它。而且图像元数据一旦拥有,就不是一件容易破解的事情。

标签: java image printing


【解决方案1】:

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

【讨论】:

  • 好吧,你知道我看过所有这些,但它看起来不像是关于 java 代码,当我在 jpanel 中绘制图像时,它的大小与原始图像大小完全相同,但是当我在画图功能,在windows中用XPS打印机打印出来的图像变大了,为什么?这是关于 xps 打印机的吗?
  • @omidaskari 因为您的屏幕可能是 96dpi,请尝试将其缩放 1.3 倍,看看是否可以解决问题。您可能需要一些代码来为此获取屏幕 dpi,因为屏幕可能不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多