DPI、PPI、DP、PX 的詳細計算方法及演算法來源是什麼?

DPI的意思是dot per inch。即為每英寸的點數,對應dp,為什麼在做UI設計時候要用dp而少用px呢?另外PPI的計算方法發是解析度的長寬各自平方之和開方除以面積,這個公式是怎麼推算出來的,原理是什麼,不明白,請指教。謝謝。


1. dpi是dot per inch,每英寸多少點,ppi是 Pixel per inch,每英寸像素數,針對顯示器的設計時,dpi=ppi。

ppi計算方法是長寬各自平方之和開方,除以對角線長度(單位英寸)。原理可以自己畫個矩形勾股定理算一算。

2. ppi表示顯示設備的點密度,dpi表示印刷品點密度。

3. dip或dp,是安卓開發用的單位,1dp表示在屏幕點密度為160ppi時1px長度。

因為安卓設備屏幕眾多不可能為每個屏幕單獨開發,所以用公式 px=dp*(ppi/160)計算在不同屏幕上的像素數。

舉例:HVGA屏320*480,一般是3.5寸,計算點密度為√ (320^2 + 480^2) / 3.5 = 164,約等於160,1pd=1px

WVGA屏480*800,按3.8寸屏算,點密度 √ (480^2 + 800^2) / 3.8 = 245,約等於240,1dp=1.5px。

還有更高解析度的屏幕就不一一列舉了,總之dp是為了方便適配不同屏幕的單位,在不同屏幕密度下,1dp的物理長度也相同。

---------------------------------------------------------------------------

2014-2-28修改,上面看不明白的可以從這裡開始看

液晶屏顯示圖像,放大來看是一個個小點組成的,這些小點就是像素點(px)。

有的手機屏幕小像素點少,比如HTC G11的4寸480x800屏幕,還有的屏幕大像素點多,比如三星note2的5.5寸720x1280屏幕。

這個圖標在不同的手機屏幕上顯示出來,就是上圖的效果。可以想像一下我們不同的手機打開同一個應用,按鈕的尺寸相差很大。

圖片顯示大小是由什麼決定的呢,屏幕尺寸?上圖第1和第2個屏都是4.3英寸。像素數?第2和第3個屏都是720x1280的像素。最後我們找到了點密度(density),也就是像素數和屏幕尺寸的比值。density是每單位長度容納的像素數量,一般用像素/英寸,也就是Pixel per inch(ppi)。

屏幕的尺寸是屏幕對角線的長度,計算對角線像素數量再除以屏幕尺寸就得到了ppi值。上面3個屏的點密度分別是217ppi,327ppi(經評論提醒,應該是342ppi),267ppi。

對比上圖可以知道,ppi越低圖片顯示的越大,ppi越高圖片顯示的越小。

要讓不同屏幕顯示圖片的大小相同,就需要對圖片進行縮放,給高ppi屏提供更大的圖片。

高ppi屏幕需要更大的圖片才能得到同樣的顯示效果,反之亦然。ppi和圖片px的關係如下

px1/px2=ppi1/ppi2

選定一個ppi值作為基礎繪製圖片,用ppi的比值計算出圖片縮放比例就可以適配各種屏幕

px2=px1*(ppi2/ppi1)

安卓選定的這個基礎值就是160ppi

px2=px1*(ppi2/160)

我們已經解決了圖片放大縮小的問題,還需要一個單位用來描述長度(因為px不固定,inch不方便)。安卓創造了一個新的單位dp,中文名設備獨立像素。並且規定在160ppi的屏幕上,1dp=1px。

設計師只需要針對160ppi的顯示屏設計並製圖,安卓會根據當前手機屏幕的ppi值來放大縮小圖片,在不同的屏幕上得到相近的顯示效果。

------------------------------------------------------------

2014-2-12修改,補充部分關於SP單位的內容

安卓設備的文字單位是sp,簡單理解和DP是相同的。

下面這段是從Android Design上抄的:

使用不同大小字體對比,可以創建有序的,易理解的布局。然而,在相同的用戶界面有太多

不同大小的字體,會很亂。Android 框架使用以下的大小:

對應到App中:

上面這張知乎截圖(簡單處理過),紅字標明了對應的各種文字類型。

實際使用中沒有那麼絕對。中文App,中號16SP文字過大,正文也常用小號14SP的。超小號12SP也不夠小,例如知乎就用了更小的字型大小。

PS設計時,針對對應的標準(HDPI,XHDPI,XXHDPI),使用不同的px。


通常我們說PPI,都是說一個數字。那麼我們先來看一下PPI的單位。PPI的意思是:Pixels Per Inch,即每英寸所擁有的像素數目。所以PPI的理論表述應該是px/in,如:iphone5s的PPI是326px/in。

可以看到:PPI=像素數量/物理尺寸(英寸數)

注意,這裡的像素數量指的是一個維度的,比如X軸的像素數量,或Y軸的像素數量,或者對角線的像素數量。而不是總的像素數量。

那麼就好辦了。這是PPI的計算公式。

我們再看一下勾股定律:如果直角三角形兩直角邊為a和b,斜邊為c,那麼a2+b2=c2。

所以:PPI計算公式里√(x2+y2)這一部分計算的是屏幕對角線的像素數。(有人說對角線上的像素數量難以計算,所以特此說明:這裡所說的對角線像素數並非實際上屏幕對角線有多少像素,只是在此公式中等效於對角線像素數量,只是數學意義上的一個值,用於計算。)而一般說的屏幕尺寸說的是屏幕對角線的長度。比如iphone 6 plus的屏幕尺寸是5.5in,說的也是屏幕對角線的長度。

那麼這個公式就回到了上面說的:PPI=像素數量/物理尺寸(英寸數)

所以,如果知道屏幕橫向或者豎向的物理尺寸,PPI也可以用橫向或豎向的像素數來計算。

即:屏幕解析度是X*Y。PPI=X/屏幕寬度(英寸)PPI=Y/屏幕高度(英寸)這樣就好理解的多。

而之所以要用對角線來計算,是因為屏幕對角線長度(屏幕尺寸)是廠商製造時就定好的精確數值。而寬和高都需要計算才能得到


我來糾正一哈,樓上這裡有一個問題,ppi的計算並不是用的勾股定理。只是形式一樣,但並不是勾股定理的意思,分子也不是對角線的像素數。為什麼呢?請聽我慢慢道來:大家應該知道手機屏幕的像素分布是點陣分布,所以x軸和y軸的像素數相乘就是總像素個數。那麼試想一下,3x3的點陣的對角線一共有幾個點?(3個),那麼4階點陣,5階點陣,n階點陣呢?他們對角線的像素個數等於他們的行數或者列數,而不是勾股定理算出來的,如果是勾股定理算的,那麼應該是根號2倍才對,所以並不是這樣,勾股定理算出來的只能是長度。那麼為什麼算式就是勾股定理的形式,那是因為,一般手機的尺寸都是指的對角線的長度(英寸),一般來講我們是不知道屏幕的長寬的,所以只能按照對角線來算。然而我百度到的是ppi指的是水平方向或者豎直方向上每英寸的像素數。不是對角線的。我的理解是假設一塊屏幕的長寬為x,y英寸。解析度為X*Y。由於在水平和豎直方向上的像素密度是一樣的,所以,(X/x)=(Y/y)=ppi;則他們的平方自然也相等,根據數學知識,(X2+Y2)/(x2+y2)=(X/x)2=(Y/y)2;不知道這個性質的請自行補腦。左邊開方得到的就是樓上說的那個公式,雖然公式是一樣的,但是表達的意思完全不同,最重要的是想說ppi不是指對角線像素數除以對角線長度,而是等於水平或者豎直方向上的。網上很多人,包括百度百科什麼的解釋都有誤。


作者:Remind z

鏈接:Material Design官方文檔中這種小圖標的標註如何理解? - Remind z 的回答

來源:知乎

著作權歸作者所有,轉載請聯繫作者獲得授權。

1、DP是物理尺寸是不會變的(就像是英寸、厘米這些)

2、Px是像素點,而這個像素點的大小有可能不一樣,其實PX都算不上是尺寸,我更願意用 陣列里的「行」「列」來表示他

要明白這兩點也很容易,我做個假設:

假設在同一面積的地里種樹,那麼1棵樹就相當於1PX,然後這個種樹的面積就相當於DP,所以一個區域里能種多少棵樹,1DP等於多少PX,這完全取決於種樹的密度,和px的密度。而這裡的密度就是PPI

如下圖如果兩個種樹的大的面積算是1DP的話,那麼左邊的因為密度大,所以PX就高,右邊的因為密度小,所以PX就少

所以我們可以把PX看成是單位個數DP看成是單位面積,所以PX /DP=密度 這裡學過數學的估計都明白,所以再明白這裡的密度一切就清楚了。

而密度值是有標準的,也就是在160ppi的時候密度值是1,所以當ppi是480ppi的時候,密度就是480/160=3,這裡就是為什麼我們經常要弄成3的倍數了,因為默認是做480PPI的。所以得到下面的公式:PX/DP=密度,,而密度=ppi/160,所以PX/DP=ppi/160, 所以簡單換算下:PX=DP*(ppi/160)或則DP=PX*(160/ppi)


可以自動計算,方便快捷,DPI Calculator


獻上一個各單位間的轉換器 http://pixplicity.com/dp-px-converter/


知識小科普!像素英寸與DPI的那些事兒http://mp.weixin.qq.com/s?__biz=MjM5NTA0NjY4MA==mid=203073243idx=1sn=c71ff9f0c0fb96fea2d3ea2b213018e1#rd 我是搬運工


現在經過查閱我已經了解,ppi的計算方法是通過勾股定理算出來對角線包含的像素點然後除以對角線的長度得來的。而px則是單位,可以表示物理和圖像兩者。

剩下的疑問還有三個:

1.dpi應該可以表示設備和圖像,表示圖像時的計算方法是不是也如同ppi一樣?

2.ppi是不是只能表示物理?

3.dip或dp (device independent pixels)設備獨立像素, 與設備屏幕有關。這個是個單位么,是不是只能針對圖像?該怎麼理解?


有沒有高人用更加簡單的方式解析一下彼此的關係.... 看著有點生晦


就連屏幕對角線尺寸 都丫的 花式很多。不信你那幾個PAD 下個屏幕測試助手試試


MARK


推薦閱讀:

2017年8月裝機配置單,預算有限,剛需,平時玩,DotA 2和H1Z1,準備下單,請大神指正?
27寸的2K和4K顯示器對於文字顯示的區別有多大?
為什麼除了蘋果,其他筆記本電腦品牌很少生產高像素密度屏幕的產品?
經常玩FPS類的遊戲,守望等,請問是上144HZ還是240HZ的顯示器呢?
為什麼CRT顯示器在不同的解析度下都看不到毛刺?

TAG:手機 | 解析度 | 顯示器 |