圖片在顯示器上在為什么會糊?PPI、DPI、Retina
原文鏈接
摘要:有關(guān)圖片的縮放及Retina屏幕介紹
圖片縮放
圖片是由一個個的像素點組成,屏幕也是一個個的像素點組成,如果屏幕的像素點和圖片的像素點能夠一一對應(yīng),那么圖片就能夠正常顯示。
比方說有一個27英寸1920x1080的屏幕,圖片分辨率為900x600,圖片以點對點的形式顯示在屏幕中央;如果換成一個27英寸2560x1440的屏幕,那么每個像素點的面積就變小了,如果還以點對點的形式顯示,圖片也會變小,此時就需要通過縮放來顯示圖片。
縮放計算方式:
在 1080P 屏幕上,顯示比例為:水平方向:900 / 1920 ≈ 46.9%;垂直方向:600 / 1080 ≈ 55.6%
在 1440P 屏幕上,要保持相同的顯示比例,圖片大小為:水平方向:2560 × 46.9% ≈ 1200 像素;垂直方向:1440 × 55.6% ≈ 800 像素。
也就是從900x600放大到1200x800的尺寸。
一般系統(tǒng)采用的是雙線性插值算法來進(jìn)行拉伸填充,這樣就會使得圖片變得模糊。如果把屏幕換成3840x2160,就可以用屏幕的四個像素點替代圖片的一個像素點,這就是臨近像素采樣算法。
插值算法
正是插值算法,使得圖片失真。
雙線性插值基于周圍四個像素點的加權(quán)平均,提供了更平滑的結(jié)果,但是會導(dǎo)致圖片模糊。而臨近像素采樣直接復(fù)制最近的原始像素值,圖像不會模糊但是邊緣可能有明顯鋸齒。如假設(shè)下面2x2像素的圖片要放大到4x4像素(實際的值并不準(zhǔn)確,只是示意):
| 原始 | 臨近像素采樣 | 雙線性插值 | |
|---|---|---|---|
| 1 3 5 7 |
1 1 3 3 1 1 3 3 5 5 7 7 5 5 7 7 |
1.00 2.00 3.00 3.00 3.00 4.00 5.00 5.00 5.00 6.00 7.00 7.00 5.00 6.00 7.00 7.00 |
Windows的DPI導(dǎo)致軟件圖片及字體模糊
在最早期的時候,屏幕的PPI和打印用的DPI是一致的。一個圖片在屏幕上有72個像素,打印機打印出來也是72個點。但是后來電腦屏幕比紙張要大不少,而且人與屏幕的距離也比人與紙張的距離要遠(yuǎn),所以同樣的像素點在大屏幕上顯得就小了。于是Windows就把圖片進(jìn)行放大,一個72x72像素的圖片,Windows會放大成96x96。
經(jīng)過不斷的發(fā)展,Windows有了現(xiàn)在的幾個默認(rèn)放大倍數(shù):100%、125%、150%、175%、200%,分別對應(yīng)96DPI、120DPI、144DPI、168DPI、192DPI。大部分應(yīng)用都默認(rèn)使用的96DPI,屏幕PPI與系統(tǒng)DPI的比值就是應(yīng)用UI的放大倍率,所以當(dāng)屏幕的PPI與系統(tǒng)的DPI比值越接近1,應(yīng)用UI顯示就越合適。但是使用非整數(shù)倍縮放,會導(dǎo)致因為線性插值算法導(dǎo)致的圖片或文字模糊失真。
比方說,屏幕尺寸23.8英寸,分辨率1920x1080,計算得出PPI為
那么放大倍率選擇100%就剛好合適。屏幕尺寸27英寸,分辨率3840*2160,計算得出PPI為
, 放大倍率選擇175%,此時DPI/PPI=168/163≈1.03,應(yīng)用UI就和開發(fā)者想讓你看到的大小差不多,但圖片和文本可能因為非整數(shù)縮放而模糊;如果選擇200%縮放,此時DPI/PPI=192/163≈1.18,界面元素比開發(fā)者想讓你看到的大18%,雖然圖片文字不會模糊,但應(yīng)用UI會顯示的更少。
不過,對于使用而言,UI大小合適應(yīng)該是優(yōu)先考慮的,所以縮放比例盡量還是讓PPI/DPI接近1更合適。
除了DPI縮放,Windows還有GDI。這種縮放會先以整數(shù)倍對矢量文本和圖片進(jìn)行縮放,然后再進(jìn)行DPI的縮放比。如設(shè)置了電腦縮放比例為175%,那么Windows會先以2倍縮放,再進(jìn)行1.75倍縮放。Windows上的磁盤管理界面、環(huán)境變量等界面都還是用的GDI縮放。但是不是所有內(nèi)容都能進(jìn)行GDI縮放,開啟后可能會讓元素錯位甚至消失。
PPI多少合適
由于人眼對屏幕清晰度的感知會有極限。在一定距離下,PPI超過某個值后人眼就感受不到屏幕的顆粒感。對于標(biāo)準(zhǔn)的5.0視力,可以在5m距離看清視力表第11行。
蘋果的Retina視網(wǎng)膜屏幕定義就是:當(dāng)設(shè)備距離人眼 10-12 英寸(約 25-30 厘米)時,像素密度達(dá)到 300 PPI 以上,人眼就無法分辨單個像素點。
Retina計算公式為: a = 2 × arctan(h/2d)。其中a為人眼所見單個像素的視角(以弧度表示),一般為1/60度 = 1/60 x π/180 = π/10800 弧度;h為像素間距,即相鄰像素中心之間的距離,單位英寸;d 人眼與屏幕的距離,單位英寸。
可以推出h = 2d × tan(a/2) ;而PPI = 1/h,也就是一英寸距離內(nèi)像素個數(shù)。
按照這個公式,30cm(約為30/2.54 = 11.81英寸)距離下,h = 2 x 11.81 x tan(π/21600) = 0.003435;屏幕PPI = 1 / h = 291.12。
所以iPhone4發(fā)布會上把iPhone4的屏幕
\[ppi =\sqrt{(640^2+960^2)/(3.5^2)} ≈ 329 \]定義為Retina屏幕。
同樣顯示器觀看距離為60cm,PPI至少要達(dá)到 1 / (2 x 60 / 2.54 x tan (π/21600)) ≈ 146。常見的27英寸4K顯示器是能夠達(dá)到這個要求的。
另外,由于OLED像素點的排列方式,它的ppi是需要打折扣。方便起見可以按80%計算,比方如果宣傳的OELD屏幕ppi為300ppi,實際的為300x0.8=240ppi。

浙公網(wǎng)安備 33010602011771號