谈谈DPI、分辨率与缇
在客户端开发的过程中免不了要接触的就是像素,屏幕分辨率,这些概念是比较常见的,但很多时候真的就只是用而已,并不知道他们到底是一种什么关系,想起之前做看图的时候,经常就会遇到一些很有意思的图片文件,那个时候就研究了一下这几个概念。近来突然想起,就记录一下。
基本概念
分辨率
先说这个最常见的概念,就是指有多少个像素,如果是屏幕分辨率,就是指屏幕有多少个像素。只不过通常提起屏幕分辨率都以宽*高的方式表达,类似 1366*768、1920*768 等等。
DPI
DPI (Dots Per Inch,每英寸点数),这个点可以理解为像素数,即每英寸像素数。
缇
这个概念,对于很多人是陌生的,但是实际上在做 WPS 的时候,会经常遇到一些有关于它的换算。其实它就是一种度量单位。1缇 = 0.05磅
磅
一种度量单位。1磅 = 1/72英寸
一些计算
1英寸 = 72磅 = 1440缇
由这个转换可知,以上三个单位的长度是确定的,这也就知道为什么在办公文档中会选择用磅而不是像素来描述字号,因为……需要打印,打印的时候时一定要知道这个东西确切的长度。
这就引发了下一个问题,屏幕上的1像素打印出来到底是多大。可以注意到的是像素本身是不跟现实中的物理量有什么联系的,但是有一个东西是有联系的,那就是 DPI,将英寸和像素联系起来了。
那 DPI 这个值又是怎么来的呢?很多人只知道 Windows 下 DPI 一般是96, 打印是300 。但是并不知道这个值怎么来的。这就要看像素怎么来的,对于电脑来说,屏幕分辨率就是像素信息。所以就把屏幕分辨率也串起来了
这里以一个 23寸,屏幕分辨率为 1920*1080的显示器 为例:sqrt(19202+10802) / 23 ≈ 95.77 ≈ 96。
总结
缇是一个绝对的概念,无论在地球上的哪个地方,缇的长度都是绝对的;DPI 是一个可以自己设置的,每英寸的像素数;屏幕分辨率也是可以自己设置的,代表了屏幕上的像素点数。
DPI 有什么用
屏幕 DPI
对于客户端开发来说,在系统层面,是无法准确知道用户的电脑屏幕是多大的,对于客户端,只能感知屏幕有多少个像素。那如果只是根据像素做开发,用户买的高分屏就全都炸了,一个15寸的笔记本,但是是2k屏幕,在用户的机器上就会看你的软件无比的小,因为同样屏幕的大小,高分屏的像素更多。而你的软件是固定像素大小的。
但是如果你根据上边的公式算一下,其实不难算出,这种高分屏的 DPI 是要比 96 大的,如果细心观察,高分屏默认选择的 DPI 也不是标准 DPI 而是放大的,其实就是因为它比 96 要大而已,因为有这个值,就可以对用户电脑屏幕的状况做到心里有数了。通常做法是,看是 96 的多少倍,对自己的软件内部元素做相应倍数放大,这就是高分屏适配的一般做法
图片 DPI
而对于某个图片设置 DPI 的作用则是控制图片打印出来的大小。对于在电脑上显示图片的大多数软件来说,修改 DPI 是不影响图片在软件里看到的大小的,因为它的像素没有变。但是相同像素大小的图片,不同 DPI,它们打印出来大小就截然不同了,因为在这里就要根据 DPI 换算它们的实际大小,才能准确的打印在纸上,这就跟 DPI 有关了。