me
me copied to clipboard
关于图片的Point和Pixel关系的说明
单位体系
- 国际单位制: SI Unit (来自法语Système international d'unités, 国际单位制), 又称公制或米制。源于法国大革命,1960年正式公布。SI已受大部分国家所采纳,但在英语国家中,SI并没有收到全面使用。它的基础是米-千克-秒制(KMS)
-
英美单位制: Imperial Unit (英制单位) 和 U.S. Customary Units (美制单位,或称美国惯用单位),它的基础是英寸-磅-秒
- 1 feet (ft 英尺) = 12 inch (in 英寸)
- 1 inch = 2.54 cm, inch在荷兰语中表示大拇指,即一节大拇指的长度,feet就是脚掌的长度,思路也是对的,用身体"部件"表示长度
- 中国传统单位制 (司马制)
- 1 丈 = 10 尺
- 1 尺 = 10 寸
- 1 米 = 3 尺
Typography (排版)
-
Point (typography) - Wikipedia中定义
In typography, the point is the smallest unit of measure. It is used for measuring font size, leading, and other items on a printed page.
- 印刷是指将文字或影像原稿迅速大量复制的一种技术,一般使用印刷机将油墨印在纸张上的过程,在旧世界中,所有都是机械结构,那么出版方和印刷方就需要约定度量单位,最后形成事实上的标准是1点等于1/72d inch,即单位inch包含72个points,一个point的物理长度为:
- 排版单位: 1 point = 1/12 picas, 1 picas (派卡) = 12 points = 1/6 inch
- imperial/US units: 1 point = 1/72 in
- metric (SI) units: 1 point = 1/72 x 2.54cm = 0.03528cm = 0.3528mm = 3.528 µm (微米)
Digital Imaging (数字图像)
- pixel是数字图像(digital imaging)领域词汇,pics (picture缩写)和el (element缩写)的组合,即图片(这里指raster image,点阵图,栅格图,区分矢量图片)中最小的元素。
Display Resolution (显示分辨率)
显示分辨率也称为解析度,泛指显示系统对细节的分辨能力。
关于评价分辨率有像素密度和像素总数两个指标:
- 像素密度 (pixel density), 通常用PPI (pixels per inch) 表示,即一个inch上有多少个像素。
- 像素总数,就是长边像素个数乘以短边像素个数。
以Dell UltraSharp 27英寸 4K显示器: U2720QM举例,我们通常会说这个显示器的分辨率是4K,其实这句话是不严谨的,翻译过来应该是:
- 我们知道27英寸是显示器的对角线,即长为59.6cm, 宽为33.5cm的矩形平面,面积为0.2m2
- 根据参数可得知每英寸像素163个,即PPI=163
- 水平像素个数 = 59.6 / 2.54 x 163 = 3834
- 垂直像素个数 = 33.5 / 2.54 x 163 = 2150
- 屏幕像素总数为 3834 x 2150 差不多和广告宣传的"4K 3840 x 2160"一致
- 通常我们讲的4K显示器是指水平像素有4096个,3840虽然差100+多个,但在一个量级上,也就差不多理解
理清概念以后就可以解释几个现象:
- 同样4K的24英寸和27英寸的显示器,像素总数相同,但是24英寸的PPI大于27英寸的显示器,解析度也就越高,所以同等像素总数的情况下,尺寸越小密度就越高,工艺就越好,价格就越贵
- 同样PPI的情况下,为什么16:9是1920x1080,而16:10是1920x1200,是因为他们的面积不同导致的
- 同样尺寸的情况下,有的24英寸是4K有的就只有2K像素,差异就是PPI
- 买显示器首先关注的指标应该是像素密度,即PPI,再者是刷新率(refresh rates)
苹果的Pro Display XDR已经到了218ppi,远超过刚才DELL的163

注: DPI中D表示dot指印刷用的墨点,但实际情况下DPI和PPI已经完全混用,有时候大家更喜欢用DPI的概率。
1x 2x 3x
从上图你可以看到 ppi 已经从最早iPhone3GS的163一直飙到了458, 屏幕尺寸大了1.65倍,但是ppi已经是原来的2.8倍。换句话说,原先一张320x480像素的图片就能铺满3.5"的屏幕,但是现在只能占同尺寸屏幕1/9的区域,所以苹果必须让开发者提供比原来大9倍的像素总数才能重新填满屏幕,当然拉伸就不谈了。
所以你可以观察到苹果的Points是跟随物理尺寸,比如3.5"就是320x480, 5.5"就是等比的414x736,这个点和屏幕的ppi无关,和物理长度有关。
再以iPhone3GS为例,屏幕宽高比(Aspect ratio)为3:2,可以得知屏幕宽度为H (2.91 in), W (1.94 in), 已知当时ppi为163,所以2.91 x 163就约为480,水平约为320,当时的points就是ppi 163的像素数量,在iPhone3GS上实现了point数量等于pixel数量,但到了iPhone4一直到iPhone8,ppi都是326,所以就需要4倍像素填充,而到了iPhoneX则需要9倍像素,这就是如果一张图片在任何iPhone已知手机上显示全屏就必须提供1x,2x,3x多种格式。
回到NSImage
NSImage中的size是指需要在屏幕上占用的物理尺寸,而只有到了Representation才需要关心具体的PPI,系统会根据不同的屏幕ppi选择最合适的rep,即best choice。
Cocoa/NSImage上,系统会根基ppi 72进行计算,如果有一张图片是100x100像素且ppi 144,则NSImage load进来以后size是50x50,bitmap rep则是100x100。
最后来看看图片为什么需要DPI
简单来说,
-
像素越多能在图片中表达的内容越大
-
DPI只是负责指导打印机在一个inch上打印多少个pixel
- 如果一张图片是72x72,假设打印机dpi设置为72,则打印出来的尺寸就应该是1inx1in
- 反之,如果我们做包装,现在打印尺寸是1inx1in,同时打印机的dpi是300,那么图片的像素就应该是300x300
-
mdls (metadata list)
~ mdls tesla.png
_kMDItemDisplayNameWithExtensions = "tesla.png"
kMDItemBitsPerSample = 32
kMDItemColorSpace = "RGB"
kMDItemComment = "Screenshot"
kMDItemDisplayName = "tesla.png"
...
kMDItemFSSize = 3911049
kMDItemHasAlphaChannel = 1
kMDItemImageIsScreenshot = 1
kMDItemInterestingDate_Ranking = 2022-01-31 00:00:00 +0000
kMDItemIsScreenCapture = 1
kMDItemKind = "PNG image"
kMDItemLastUsedDate = 2022-01-31 04:54:33 +0000
kMDItemLastUsedDate_Ranking = 2022-01-31 00:00:00 +0000
kMDItemLogicalSize = 3911049
kMDItemOrientation = 0
kMDItemPhysicalSize = 3911680
kMDItemPixelCount = 4163856
kMDItemPixelHeight = 1556
kMDItemPixelWidth = 2676
kMDItemProfileName = "DELL P2415Q"
kMDItemResolutionHeightDPI = 144
kMDItemResolutionWidthDPI = 144
kMDItemScreenCaptureType = "selection"
kMDItemUseCount = 1
kMDItemUsedDates = (
"2022-01-30 16:00:00 +0000"
)
- exiftool
exiftool tesla.png
ExifTool Version Number : 12.30
File Name : tesla.png
Directory : .
File Size : 3.7 MiB
File Permissions : -rw-r--r--
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 2676
Image Height : 1556
Bit Depth : 8
Color Type : RGB with Alpha
Compression : Deflate/Inflate
Color Space Data : RGB
Profile Connection Space : XYZ
Profile Date Time : 2022:01:31 12:26:28
Profile File Signature : acsp
Primary Platform : Apple Computer Inc.
CMM Flags : Not Embedded, Independent
Device Manufacturer : Apple Computer Inc.
Exif Byte Order : Big-endian (Motorola, MM)
...
X Resolution : 144
Y Resolution : 144
Resolution Unit : inches
User Comment : Screenshot
Exif Image Width : 2676
Exif Image Height : 1556
Pixels Per Unit X : 5669
Pixels Per Unit Y : 5669
Pixel Units : meters
XMP Toolkit : XMP Core 6.0.0
Apple Data Offsets : (Binary data 28 bytes, use -b option to extract)
Image Size : 2676x1556
Megapixels : 4.2