一、问题背景
最近将windows项目迁移到Mac上,发现图片模糊。本节主要介绍在mac上图片模糊原因。下一节介绍解决方案和代码。废话不多说,直入主题。
二、视网膜屏幕
视网膜屏幕是分辨率超过人眼识别极限的高分辨率屏幕,是由苹果公司在2010年iPhone 4发布会上首次推出的营销术语。
视网膜(Retina)屏幕是苹果公司"发明"的一个营销术语。并在部分移动产品使用。苹果这个术语用在iphone 4手机上,自此一直沿用,它将960×640的像素压缩到一个3.5英寸的显示屏内。也就是说,该屏幕的像素密度达到326像素/英寸(ppi),称之为“视网膜屏幕”。
ppi(pixels per inch)所表示的是每英寸长度所能够排列的像素(pixel)的数目。因此PPI数值越高,即代表显示屏能够以更高的密度显示图像。当然,显示的密度越高,拟真度就越高。pixels per inch是图像分辨率的单位,图像ppi值越高,单位面积的像素数量就越多,所以画面的细节就越丰富。(来自百度百科)
移动端设备分为非视网膜屏幕和视网膜屏幕。二者区别:
非视网膜屏幕:屏幕可视区域宽度320像素,只能显示320像素内容。
视网膜屏幕:屏幕可视区域宽带320像素,却能显示640像素甚至更多像素内容。
三、设备像素比
设备像素比(Device Pixel Ratio, DPR):其实指的是devicePixelRation,被所有WebKit浏览器以及Opera所支持,一个设备的物理像素与逻辑像素之比。
DPR = 物理像素(设备像素)/ 独立像素(CSS像素)
当像素比为1:1时,使用1个物理像素显示1个CSS像素;当像素比为2:1时,使用4个物理像素显示1个CSS像素;当像素比为3:1时,使用9个设备像素显示1个CSS像素。
物理像素分辨率 | 逻辑像素分辨率 | PPI | 设备像素比 (devicePixelRation) | |
iphone4 | 640x960 | 320x480 | 326 | 2 |
iphone5 | 640x1136 | 320x568 | 326 | 2 |
iphone6 | 750x1334 | 375x667 | 326 | 2 |
iphone6p | 1080x1920 (1242x2208) | 414x736 | 401 | 2.6(3) |
四、一套代码为什么图片在windows上清晰,在mac上不清晰?
经过测试发下:windows上设备像素比是1,而mac上设备像素比是2,这就意味着在相同尺寸大小图片,mac上如果想保持清晰度,图片密度需要扩大两倍。一般情况,代码中规定了UI控件的尺寸,在mac上如果想让图片显示清晰,原始图片至少需要2倍图。