像素转换成厘米?

28

我只想知道像素单位是否是一个不变的量,是否可以将像素转换成厘米?

9个回答

32
这个问题类似,该问题讨论的是点而不是厘米。一英寸等于72点,一英寸等于2.54厘米,因此只需在那个问题的答案中将72替换为2.54即可。以下是引用并更正后的答案:

一英寸等于2.54厘米;如果假设每英寸有96像素就足够了,公式就非常简单:

厘米 = 像素 * 2.54 / 96

Microsoft Windows有一种获取显示器每英寸配置像素的方法叫GetDeviceCaps。 Microsoft有一个名为“Developing DPI-Aware Applications”的指南,请查找“Creating DPI-Aware Fonts”部分。


21

6
如果你能想出实际的公式,我打赌你会得到额外加分。 - Allen Rice
英寸 = (像素 * DPI / (每厘米英寸数) )? - willoller
最好把声望给马克·兰索姆,因为他在40分钟前就完成了这个任务! - willoller

9
我猜测你想在屏幕上显示物品,使其大小接近实际大小。如果是这样的话,我建议将你的物品与现实物品(信用卡、钞票、可乐罐等)放在一起展示,或者更好的方法是,允许用户将信用卡、钞票或尺子等物品放在屏幕前。然后,你可以让他们调整滑块或类似的东西来匹配该对象的宽度或高度。通过拿着信用卡这样一个相对已知高度和宽度的物品,你可以轻松确定像素与英寸的比率,并用心使用它。维基百科说 大多数信用卡由当地银行或信用合作社发行,形状和大小符合ISO/IEC 7810标准的ID-1规定(85.60 x 53.98毫米)
使用画图工具,我的一张信用卡恰好高212像素,即53.98毫米/ 212像素=每毫米3.92像素。将其乘以10,即为每厘米39.2像素。 您可以轻松地通过JavaScript、C#、Flash或其他编程语言来实现此功能。

1
那确实更性感,而且在现实生活中也很有用。 - willoller
呵呵,谢谢,如果还没有现成的,我甚至可以制作一个jQuery插件来完成这个。 - Allen Rice

7

您可以将像素转换为厘米,但这不是一个一致的转换。它取决于所涉及的显示设备的大小和分辨率。像素的定义不会改变,但像素的大小在不同的显示设备上会有所不同。


4

不同的媒介和显示器具有不同的像素密度。

例如,桌面显示器可能每英寸有75个像素,而打印输出可能达到300个像素。

这是一个按像素密度排序的显示器列表


3
在 Adobe Illustrator CS3 中,我得到的数字是 1 厘米 = 28.347 像素。请注意,我使用的是分辨率为 102 像素每英寸、40 像素每厘米的 iMac 7。此链接 http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density 由 rebo 提供。

我使用 JavaScript 创建了一个 Adobe Illustrator CS3 文档来测试 1 厘米 = 28.347 像素的值,并且完全匹配。

我知道这个问题很旧,但我一直在尝试找到答案,决定分享我的发现。

祝好


3
像素系统是依赖于您的屏幕分辨率的。首先,您应该获取屏幕的dpi(每英寸像素密度)。例如,您的屏幕dpi为96;
1厘米=37.795276F像素在96dpi中。
37.795276F / 96F = 0.03937007F,这是每个像素在1dpi中。
现在,您可以通过获取屏幕的当前dpi并将其乘以0.03937007F来使其适应您屏幕的每个厘米所需的dpi(屏幕分辨率)。
让我们设定一个场景。
我想制作一个方法,它可以获得厘米并根据屏幕dpi返回像素。
public float CentimeterToPixel(int valueCM, float dpi)
{
   return 0.03937007F * dpi * valueCM;
}

如果你想让它更精确,你需要接近dpiX和dpiY。

例如,在C# winforms中,您可以添加一个来自System.DrawingSystem.Drawing.Drawing2D的Graphics对象,然后获取其dpiX和dpiY值,并根据它设计您的区域以进行更准确的计算(在某些情况下,水平分辨率与垂直分辨率不同)。请参见下面的代码。

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace MyApp
{
    static class MyAppClass
    {
        private static Bitmap bmp = new Bitmap(1, 1);// a simple bitmap that automaticaly created base on current screen resolution
        private static Graphics graphic = Graphics.FromImage(bmp);

        public static float CentimeterToPixelWidth(int valueCM)
        {
           return 0.03937007F * graphic.DpiX * valueCM;
        }

        public static float CentimeterToPixelHeight(int valueCM)
        {
           return 0.03937007F * graphic.DpiY * valueCM;
        }
    }

}

希望这能对你有所帮助,Heydar。

1

像素的大小取决于显示设备。

以下“找到”的代码使用API调用来确定像素密度在.NET中获取屏幕DPI

(“找到”是指我在谷歌上搜索到了它,但还没有尝试过)


0
据我所了解,像素是指:

图片元素

因此它取决于两个因素:

(a) 分辨率 (b) 物理屏幕尺寸

因此,如果您将屏幕尺寸除以分辨率,这应该会给您每个像素的厘米数。


1
确保屏幕大小以厘米为单位才能正常工作。 - Timtech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接