【问题标题】:How to convert pixel into point size in html?如何在html中将像素转换为点大小?
【发布时间】:2015-08-04 16:40:21
【问题描述】:

亲爱的,我想将我的像素转换为磅值,在我的项目中,当用户调整文本图像的大小时,它应该使用磅值根据宽度重新调整大小??

有人知道吗?

【问题讨论】:

    标签: php css font-size


    【解决方案1】:

    1 像素 = 0.264583333 毫米,
    1 毫米 = 3.779527559 像素
    根据translatorscafe.com
    但实际上像素是一个相对测量值,这取决于您的屏幕分辨率。 您实际上无法将相对测量正确地转换为固定测量,您只能对其进行近似。并且近似值的正确性取决于您的假设有多准确,在这种情况下,假设是 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 毫米^2 求解 x 结果为 398.4843356 mm(根据 Casio Classpad 300)

    因此,如果我的屏幕宽度为 1920 像素,等于 398.4843356 毫米,那么我的像素为 0.20754392479166666666666666666667 毫米

    所以现在您可以计算,如果我将分辨率切换到 1280 x 768 像素,则等式变为: x^2 + (768/1280*x)^2 = 457.2^2 毫米^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
    如下:

    由于 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
    

    【讨论】:

    • @metal-gear-solid:如果他小学毕业了,应该能从中推导出PHP代码……
    • 嘿,我不知道,@metal-gear-solid:你的回答对我很有帮助
    • 这个答案的重要一点是关于像素和点之间的比率是可变的。你无法真正近似它,你只能做出假设。您将遇到 96 个 DPI 系统,您将遇到 120 个 DPI 系统(等等)。这是一个巨大的差异。如果您在网络上工作,甚至不要尝试在它们之间进行转换。如果您正在处理屏幕内容,则使用像素作为图像和 ems 或 % 作为字体大小。如果您正在处理打印样式表,请考虑 pt 的所有内容。
    • @David Dorward: +1 完全正确,如果他想将其转换得更小,他将需要客户端的屏幕分辨率,这可以通过 JavaScript 获得,但 JavaScript 是客户端,而 PHP是服务器端,所以他至少需要 AJAX 来做到这一点。这意味着,单独使用 PHP 是不可能的。
    • 分辨率并不重要,重要的是 DPI。我不认为浏览器中的 JS 可以使用它(并且假设系统首先正确校准)
    猜你喜欢
    • 2013-07-07
    • 2011-03-18
    • 1970-01-01
    • 2015-07-05
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多