我写了一个程序生成一个 BufferedImage 显示在屏幕上然后打印。部分图像包含 1 像素宽的网格线。也就是说,线是 1 个像素,线与线之间大约有 10 个像素。由于屏幕分辨率,图像显示得比那个大得多,每行有几个像素。我想把它画得更小,但是当我缩放图像时(通过使用 Image.getScaledInstance 或 Graphics2D.scale),我丢失了大量的细节。
我也想打印图像,我正在处理同样的问题。在这种情况下,我使用此代码来设置分辨率:
HashPrintRequestAttributeSet set = new HashPrintRequestAttributeSet();
PrinterResolution pr = new PrinterResolution(250, 250, ResolutionSyntax.DPI);
set.add(pr);
job.print(set);
它可以在不丢失细节的情况下缩小图像。但问题是图像在同一边界被切断,就好像我没有设置分辨率一样。我也很困惑,因为我希望更多的 DPI 可以制作更小的图像,但它以另一种方式工作。
我在带有 eclipse 的 Windows 7 上使用 java 1.6。
最佳答案
关于图片在页面边界被截断,是否检查过图形的裁剪区域?我的意思是尝试:
System.out.println(graphics.getClipBounds());
并确保它已正确设置。
关于java设置图像的分辨率和打印尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057514/