簡單易懂ppi和dpi的本質和由來

       今天學習安卓的時候又遇到這個問題,第一次認真搜索了一下,看了很多博文說的不太全面或是沒有講到本質,我只是簡單說一下對於電子屏幕來說ppi和dpi的區別。


一、PPI和DPI的概念 

       先說普通用戶接觸較多的ppi,英文全稱pixels per inch,又叫像素密度,意思是每英寸上的像素數。如圖是我畫的垃圾圖,湊活看,一塊1280*720分辨率的5英寸屏幕,意思是橫向720個像素,縱向1280個像素,對角線長度5.0英寸,可以計算ppi = sqrt(1280^2+720^2)/5.0 = 293.72。理論上人眼所能分辨的ppi爲300,300以上可稱視網膜屏,也就是蘋果所謂的Retina屏。

       然後是開發中用到的dpi,英文全稱dots per inch,又叫點密度。dpi是比ppi範圍廣的多的詞,因爲只有數碼設備纔有像素這個概念,其他的比如打印機就只能用dpi衡量。除了點和像素的區別,其他計算方式和ppi是一樣一樣的。


二、PPI和DPI的區別

       理論上對於屏幕而言,點就是像素,像素就是點,ppi和dpi應該沒有區別纔對,但是對於圖裏的屏幕,已經計算過ppi=293,跑分軟件卻顯示dpi=320。爲什麼dpi和ppi會不同?其實這是人爲規定的結果。

       在開發中使用的dot也就是dpi中的d,如果有一個640d*360d的東西,顯示在上述1280*720的屏幕上,嚴格點對點顯示,將正好佔據1/4個屏幕,但是在640*360的屏幕上就是佔滿了整塊屏幕。生活中的屏幕分辨率五花八門,點對點顯示肯定是行不通的,所以需要按比例顯示。先規定基準dpi爲160(安卓早期谷歌規定的基準值),還是嚴格按照定義,1280*720的5寸屏幕ppi=dpi=293,假設有一條80d的線段,那麼在這塊屏幕上實際點數應該是293/160*80=146.5???出現了半個像素的情況!!!這讓屏幕左右爲男,顯示也不對,不顯示也不對。爲了避免這種問題,谷歌又規定了幾種標準dpi分別爲240、320等等,和160dpi的比例分別爲1.5、2,293與320最爲相近(沒有研究具體什麼是最爲相近),所以規定此屏幕dpi爲320。這樣只要確保開發中使用的大小即點數必須爲偶數,這樣再乘以比例就不會出現半個點的情況。


三、總結

     總結一下,對於手機屏幕,點和像素是一個意思,理論上ppi和dpi應該是一個東西,但是由於ppi五花八門,在按比例放大的時候會出現半個像素的情況,所以人爲規定了幾個特殊的dpi取值,比如160、240、320等,完美解決了問題,同時導致手機屏幕的ppi和dpi不再相等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章