gpt4 book ai didi

java 。不缩放打印高分辨率图像

转载 作者:行者123 更新时间:2023-12-03 23:13:50 27 4
gpt4 key购买 nike

我有一个 java.awt.Image 列表,每个图像的分辨率都是 300 DPI。我想打印它们,当我开始打印这些图像时(使用 javax.PrintService API),只打印了一些图像,因为默认情况下 Java 的打印/3D 类使用 72DPI(对比我的图像的 300 DPI)。但是当我使用 72 DPI 的图像(与 Java 默认分辨率相同)时,所有图像都打印得很好(当打印整个图像时,不仅仅是它的一部分)。

问题:在哪里可以设置图像的打印分辨率以适合打印区域?

我尝试设置 PrintRequestAttributeSet.add( new PrinterResolution(300, 300, ResolutionSyntax.DPI)) 但这没有效果。

目前,我缩放图像以适合打印区域,但缩放图像后质量下降,因此打印文档不可读。

最佳答案

你可以使用 drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)

参数 dx1、dy1、dx2 和 dy2 定义图像必须符合的范围。你需要做一些计算。这应该在该坐标上打印高质量图像(不按比例缩小)。

class MyPrintable implements Printable {
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex != 0) return NO_SUCH_PAGE;

Graphics2D g2 = (Graphics2D) g;
g2.printImage(....);
return PAGE_EXISTS;
}
}

然后

PrinterJob pj = PrinterJob.getPrinterJob();
...
PageFormat pf = ...;
...
pj.setPrintable(new MyPrintable(), pf);

您仍然需要像以前一样设置分辨率。

关于 java 。不缩放打印高分辨率图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com