如何让java使用毫米而不是像素?

如何让java使用毫米而不是像素?,java,printing,size,lwjgl,image-resizing,Java,Printing,Size,Lwjgl,Image Resizing,我的问题是,我根据毫米到像素调整图片的大小,然后打印出来,这永远不会精确。 我的问题是,有一种方法可以让java以毫米或任何其他公制单位而不是像素来绘制,因为像素永远不会精确到毫米。如果你知道分辨率-px/cm,我想你可以用厘米来计算。但是,打印机和显示器的分辨率因硬件本身而异。例如,在Photoshop中,您可以定义所需的每英寸像素数。打印机是否能够实际打印定义的密度取决于打印机本身 举个极端的例子,想想46英寸电视和你的智能手机。两者都声称拥有1080张高清图像,但很明显,以英寸为单位的大小

我的问题是,我根据毫米到像素调整图片的大小,然后打印出来,这永远不会精确。
我的问题是,有一种方法可以让java以毫米或任何其他公制单位而不是像素来绘制,因为像素永远不会精确到毫米。

如果你知道分辨率-px/cm,我想你可以用厘米来计算。但是,打印机和显示器的分辨率因硬件本身而异。例如,在Photoshop中,您可以定义所需的每英寸像素数。打印机是否能够实际打印定义的密度取决于打印机本身


举个极端的例子,想想46英寸电视和你的智能手机。两者都声称拥有1080张高清图像,但很明显,以英寸为单位的大小差别很大。

使用
java.awt.Toolkit.getDefaultToolkit().getScreenResolution()获取屏幕
DPI

然后简单地执行
(MM*DPI)/25.4

结果将是相对于物理长度(MM)的像素量。

进行一些分析,您可以更好地理解:

pixels = mm * inch/mm * pixels/inch
pixels = mm (milimeters) * 25.4 (how many inches I have in 1 mm) * DPI (screen resolution)

DPI是每英寸点数,与每英寸像素数相同。

如果您能给我举个例子,将缓冲图像的大小(以像素为单位)设置为正确的大小(以厘米为单位)。我来计算打印机的分辨率。我只是需要一个很好的转换。我刚刚读到,将厘米转换成像素就像是问‘我能将千克转换成小时吗?’,所以我想我必须以某种方式处理点。。啊,太令人困惑了。如果你不知道像素/厘米,你就不能把像素转换成厘米。例如,我有全高清笔记本电脑+全高清外部显示器。相同的图片在内置和外部显示器上具有不同的尺寸,因为它们具有不同的像素密度(px/cm)。即使你以厘米为单位计算尺寸,它们在另一台设备上肯定会有所不同。我一直做得很好,我的老板只是给了我错误的纸张尺寸-,-好吧,至少这次我没有找到我自己的答案,尽管肯定很接近:)