dpi 程式設計

2021-09-08 02:03:18 字數 2382 閱讀 2385

一英吋裡面有多少個畫素點,稱之為dpi。為什麼要是英吋呢?國際標準計量單位應該是厘公尺,公尺,公釐之類的,只能說是科技界還是由西方控制的。

一英吋等於=2.54厘公尺

為什麼要有dpi這種單位?我想是因為想在不同解析度的平面上,得到大小一樣的物品這種需求存在。比如電腦螢幕的預設設定是96dpi(這個是不準確的軟體設定),因為不同電腦螢幕的解析度精細程度是不同的,所以同樣是96dpi的設定,顯示同一張**的大小就會不同。如果電腦螢幕精細程度剛好相同,那麼顯示的大小就應該相同。

如果要讓電腦螢幕顯示的大小和列印出來的大小相同,比如電腦螢幕是96dpi,列印解析度是300dpi,一張**的大小是600×600畫素的,在電腦裡面顯示的尺寸是600 / 96 = 6.25英吋×2.54 = 15.875厘公尺。而列印出來的大小是600 / 300 = 2 × 2.54 = 5.08 厘公尺,只是電腦的三分之一大小而已。為了要把列印的大小設定得好像電腦螢幕顯示的大小一致,那麼必須調整螢幕的dpi或者調整列印的dpi,讓兩個裝置的dpi一致。

可見dpi確實有點用處,不過dpi也容易引起混淆。因為dpi實際上是乙個裝置的物理特性,和邏輯上的畫素是沒有關係的。不管是螢幕上,還是紙上的影象,最終的畫素都是600×600,只是看上去大小不同而已。而事實上,很多系統並不在乎大小,而只在乎顯示的畫素。

不管是dpi 96的專案,還是dpi72的螢幕,300×300的視窗,還是300×300的視窗,哪怕大小完全不一樣。因此我們需要乙個按照大小來做單位的顯示系統,而不是乙個按照畫素來顯示的系統。而傳統的做法是將dpi96的裝置,偽裝成dpi72的裝置,但是遺憾的是,當你把dpi72調整為96後,相差反而更大了,因為歸根結底,系統的底層都是承認解析度而已,其他不過是軟體的縮放。要在dpi72的電腦上顯示dpi96的效果,需要把dpi72改為dpi54,這樣同乙個東西,就會縮小為0.75,顯示96的畫素,只需要72個畫素,剛好在dpi72的物理裝置上顯示一英吋的東西。

可見系統對於這個dpi的修改,更像是黑客手法。

如果建立乙個以物理大小做單位的系統,而不是基於畫素的系統,這個就能從根本上解決不同裝置的dpi問題。但是並不是所有場合都是以「大小」為主的,有很多場合,畫素才是主體。

我認為,ui是最適合用物理單位的地方。因為人們希望在不同裝置看到的影象大小應該一致。而那些「內容」並不適合物理單位,因為比如電影經常縮放使用,人們往往希望看到的是畫素點一一對應的最佳效果,或者是放大的效果,並不太在乎他的「固有尺寸」。

72之一英吋等於一磅。磅是字型單位。

1絲公尺(0.1公釐)據說是眼睛的極限解析度,換算下來一英吋等於254絲公尺,9磅等於31絲公尺,是最小的實用字型單位。

建立乙個以絲公尺為單位的ui系統,24寸的絕對高清屏解析度應該是:5080×2858。

不同字型對應的絲公尺單位:

1磅 = 1/72英吋 = 3.5絲公尺

八號 = 5  磅 =  17.6絲公尺

七号 = 5.5磅 = 19.4絲公尺

小六 = 6.5磅 = 22.9絲公尺

六號 = 7.5磅 = 26.4絲公尺

小五  = 9  磅 = 31.7絲公尺

五號 = 10.5磅 = 37 絲公尺

小四 = 12磅 =  42.3絲公尺

四號 = 14磅 = 49.3絲公尺

小三 = 15磅 = 52.9絲公尺

三號 = 16磅 = 56.4絲公尺

小二 = 18磅 = 63.5絲公尺

二號 = 22磅 = 77.6絲公尺

小一 = 24磅 = 84.6絲公尺

一號 = 26磅 = 91.7絲公尺

小初 = 36磅 = 127絲公尺

初號 = 42磅 = 148.1絲公尺

假設我們建立乙個視窗,他是300×300畫素的,我們希望程式可以跨裝置執行,在不同裝置下大小一致,那麼就先要求出他對應的物理尺寸。300/96dpi × 254 =  793絲公尺,然後把這個數值記錄下來。在第二個dpi為72的系統下,算出實際的畫素應該為 793 / 254 × 72 = 224.

有些時候我們希望能夠整體的放大和縮小ui,因此需要乙個比例因子。dpi不適合用來做縮放比例因子,因為dpi是乙個裝置的固有特性,是解析度(精細程度),而縮放針對的外觀的大小,我們希望放大也能保持精細。

比如我們在手機上希望更小的字型,因為手機的螢幕有限,我們可以忍受小字型。而桌面電腦和電視上**又要求不同的視覺效果。

33厘公尺據說是普通閱讀的健康距離。那麼33厘公尺遠的9磅字型,4公尺(電視**距離)應該擴大多少呢?

400/33 = 12倍,假設46寸的彩電,效果上等於4寸~~,現在很多數碼電視的介面都設定的異常複雜,就是沒有考慮到遠距離的視覺效果。因為人的眼睛可以調節焦距,所以以上的演算法也許存在問題,我感覺大概有4倍左右,12寸差不多了。

案例:數位相機拍攝的**,大多是300dpi(視覺極限)的,比如3968×2232畫素的一張**,希望列印和顯示的大小一致,那麼顯示的解析度應該是:3968×96/300 。。。 1269 × 714。

dpi和ppi換算 DPI和PPI的計算公式

關於dpi和ppi的問題,我們之前發布了一篇文章 右側 但是仍然有小夥伴表示不好理解。其實,如果你是數學腦,則可以用數學化的方法來理解。請看以下計算過程 原圖我們的原圖是乙份長寬都是1800畫素的。這張長寬都是1800畫素 對它自己而言,dpi和ppi沒有意義。它的解析度引數,僅僅是1800畫素而已...

Android螢幕密度dpi

什麼叫密度?android中的密度就是螢幕每英吋所包含的畫素點數。單位為dpi px 畫素。比如我們的手機寬2英吋長3英吋。如果他的解析度是320 480px的話。他的密度就是160dpi 如果手機的解析度為640 960px.寬為2英吋,高為3英吋。手機的密度是320dpi 因此密度高的手機螢幕顯...

手機螢幕DPI計算

1 screen size 螢幕尺寸 指手機的實際物理尺寸,如通常所說的2.8英吋,3.5英吋,phone手機的螢幕是3.5英吋 2 aspect ratio 寬高比率 指的實際的物理尺寸寬高比率,分為long和nolong,milestone是16 9,屬於long 3 resolution 解析...