如何在HTML中将像素转换为点大小?

3
亲爱的大家,我想将我的像素转换为点大小,在我的项目中,当用户调整文本图像的大小时,它应该根据宽度使用点大小进行重新调整大小。有任何想法吗?
1个回答

3

1个像素= 0.264583333毫米,
1毫米= 3.779527559个像素
根据translatorscafe.com的说法。

但实际上,像素是一个相对的度量单位,它取决于屏幕分辨率。屏幕分辨率定义了您在水平和垂直方向上拥有多少像素。因此,分辨率只是指您拥有多少每英寸像素(PPI)的另一个单词。 (通常称为DPI的PPI是错误的,DPI适用于打印机,PPI适用于监视器)。

您实际上无法将相对测量正确转换为固定测量,您只能近似计算。近似值的准确性取决于您的假设有多准确,在这种情况下,假设是1像素= 0.264583333毫米

例如,假设我的情况如下:

  • 我具有1920 x 1080像素的分辨率(根据Windows显示设置)。
  • 然后我在笔记本电脑上拥有18英寸的显示器。
  • 这意味着对角线为18英寸,并且由于1英寸等于25.4毫米(根据Google),这使对角线为457.2毫米(根据calc.exe)。

进一步假设像素相对于宽度和长度一样长(即像素是正方形而不是矩形),这意味着显示器的高度是其宽度的1080/1920倍。使用勾股定理a ^ 2 + b ^ 2 = c ^ 2 = 457.2 ^ 2 mm ^ 2 并且a是x,b是1080/1920 x,我们有 (x)^ 2 +(1080/1920 x)^ 2 = 457.2 ^ 2 mm ^ 2 解决x得到398.4843356毫米(根据Casio Classpad 300)

因此,如果我的屏幕宽度为1920个像素,相当于398.4843356毫米,那么对于我来说,一个像素就是0.20754392479166666666666666666667毫米。

现在您可以计算,如果我将分辨率降低到1280 x 768像素,则方程变为:
x ^ 2 +(768/1280 * x)^ 2 = 457.2 ^ 2 mm ^ 2
因此,x解析为x = 392.0457656(根据Casio Classpad 300) 因此, 1280像素对应于392.0457656毫米,这使1个像素等于0.3062857544毫米。

这就是为什么如果您降低分辨率,所有内容(相对于彼此)都会变得更大的原因。
测量单位是像素,但实际大小是毫米。

因此,您看到了相同的屏幕,但不同的结果,但每个结果都是正确的。
因此,像素=相对于分辨率,而不是毫米。

一般来说:

w: width in Pixel
h: height in Pixel
d: Monitor diagonal
x: Pixel-Size

根据毕达哥拉斯定理,有:
(wx)2 + (hx)2 = d2
因此得出:
Pixel-Size 由于分辨率设置中已知 w 和 h,现在可以计算屏幕的宽度和高度(以英寸/厘米/毫米为单位)。
Imports Microsoft.VisualBasic



Namespace Units

Public Class UnitConversion

    Public Shared Function mm2Points(ByRef dSomeMillimeters As Double) As System.Web.UI.WebControls.Unit
        ' Point ist eine Maßeinheit, die 1/72 Zoll entspricht.
        ' 1 Zoll = 1 in = 1000 Thou = 1000 mil = 1/12 ft = 1/36 yd = 25,4 mm = 2,54 cm = 0,254 dm = 0,0254 m.
        ' 1 Point = 0.35277777777777777777777777777778 mm
        ' --> 1mm = 2.834645669291338582677165354337 Point

        Return System.Web.UI.WebControls.Unit.Point(dSomeMillimeters * 2.8346456692913384) 'Point
    End Function


    Public Shared Function mm2Pica(ByRef dSomeMillimeters As Double) As System.Web.UI.WebControls.Unit
        'Pica ist eine Maßeinheit, die 12 Points entspricht.
        ' The contemporary computer pica is 1/72nd of the Anglo-Saxon compromise foot of 1959, i.e. 4.23_3mm or 0.166in. Not
        ' 1 Pica = 4.233333333333333333333333333333333 mm
        ' --> 1 mm = 0.23622047244094488188976377952758 Pica
        Return dSomeMillimeters * 0.23622047244094488
    End Function


    Public Shared Function cm2Points(ByRef dSomeCentiMeters As Double) As System.Web.UI.WebControls.Unit
        Return mm2Points(dSomeCentiMeters * 10.0)
    End Function


    Public Shared Function cm2Pica(ByRef dSomeCentiMeters As Double) As System.Web.UI.WebControls.Unit
        Return mm2Pica(dSomeCentiMeters * 10.0)
    End Function

End Class

End Namespace

1
嘿,我不明白 @metal-gear-solid 的回答真的对我很有帮助。 - Chirag
1
这个答案中重要的部分是关于像素和点之间比率可变的部分。你无法真正地近似它,只能做出假设。你会遇到96 DPI系统和120 DPI系统(以及其他系统)。这是一个巨大的差异。如果你在网上工作,甚至不要尝试在它们之间进行转换。如果你正在处理屏幕内容,则使用像素来处理图像,使用ems或%来处理字体大小。如果你正在处理打印样式表,请考虑使用pt来处理所有内容。 - Quentin
@David Dorward:完全正确,如果他想转换成非定长格式,他需要客户端的屏幕分辨率,可以通过JavaScript获取,但JavaScript是客户端的,而PHP是服务器端的,所以他至少需要AJAX来做到这一点。这意味着仅使用PHP是不可能实现的。 - Stefan Steiger
1
分辨率并不重要,DPI 才是关键。我认为这在浏览器中不可用(而且这还假定系统首先已正确校准)。 - Quentin
同一制造商在不同屏幕尺寸上像素大小的比较示例:http://www.prismo.ch/comparisons/desktop.php - feeela
显示剩余2条评论

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