Bitmap的內(nèi)存占用

圖片內(nèi)存占用計算公式

圖片分辨率 = a 意系,b  比如:18*12

圖片存放的文件夾對應的dpi 拱燃, 比如hdpi是240碎浇,xhdpi是320dpi 腾仅,我們定位為變量inDensity

手機設(shè)備的dpi乒裆,這個值取決于每臺手機,
比如我的小米10pro推励,是440dpi (這個值并不是手機分辨率的平方之和 鹤耍,開根號,再除以手機尺寸验辞,這個展示分辨率取決于廠商的算法), 
我們定義為targetDensity

圖片縮放比例 scale= targetDensity / inDensity 

每個像素點的內(nèi)存大小 pointMemory 稿黄,取決于色深,比如argb8888的色深就是32個bit位 = 4byte

圖片占用內(nèi)存 = (圖片寬a * scale + 0.5) * (圖片高 * scale +0.5) * pointMemory

同一張圖片跌造,展示在不同分辨率手機上杆怕,內(nèi)存占用大小一致嗎?

不一致。
因為inDensity的數(shù)值一致陵珍,但targetDensity的數(shù)值不一致寝杖,所以圖片的縮放比例不同,占用內(nèi)存自然不同

同一手機設(shè)備加載不同分辨率文件夾下的同一圖片撑教,內(nèi)存占用大小一致嗎朝墩?

一致。
雖然不同分辨率下的inDensity數(shù)值是不同的伟姐,但只要設(shè)計師是按照規(guī)范切的圖收苏,
那么不同分辨率圖片之間的寬高縮放比例 = inDensity之間的比例。
所以最終不同分辨率的圖片在同一設(shè)備上展示時愤兵,圖片寬高縮放后得到的最終值是一致的鹿霸,內(nèi)存也就一致了。

imageView控件的大小會影響內(nèi)存占用大小嗎秆乳?

不會懦鼠。
因為通過src屬性,我們在獲取對應的drawable時屹堰,設(shè)置的density為0肛冶,density為0的情況下,圖片的寬高是不會進行任何的縮放的扯键,故而占用內(nèi)存大小也不會有任何的改變睦袖。
內(nèi)存占用大小 = 圖片原始寬 * 圖片原始高 * 色深

同一個資源id,通過BitmapFactory創(chuàng)建的bitmap和xml文件中imageView設(shè)置的src荣刑,占用內(nèi)存是否一致馅笙?

會有不一致的場景。
如果inDensity和targetDensity不一致厉亏,那么通過BitmapFactory創(chuàng)建的bitmap會進行縮放董习,
從而導致 內(nèi)存大小 != 圖片原始寬 * 圖片原始高 * 色深。
而xml通過src屬性設(shè)置的圖片爱只,因為density = 0的原因皿淋,圖片不會進行任何的縮放
內(nèi)存大小 = 圖片原始寬 * 圖片原始高 * 色深

三方圖片加載框架設(shè)置圖片大小,是否會影響圖片占用內(nèi)存恬试?

會沥匈。
三方框架設(shè)置圖片大小的操作本質(zhì),是修改圖片的寬高忘渔,圖片的寬高變了,占用內(nèi)存大小自然也就變了

google圖片適配的規(guī)則

先找手機設(shè)備dpi對應的drawable文件夾缰儿,如果當前文件夾找不到畦粮,google的策略是優(yōu)先圖片縮小。
所以會接著去找高分辨率下文件夾有沒有這張圖片,高分辨率都沒有的情況下宣赔,會接著從低分辨文件夾中查找

比如:手機設(shè)備dpi 為320(xhdpi)预麸,如果在drawable-xhdpi文件中找不到對應圖片,
則接著去drawable-xxhdpi儒将、drawable-xxxhdpi文件夾中查找吏祸,
如果依然沒有找到,則去drawable-hdpi钩蚊、drawable-mdpi下查找

為什么建議圖片要放在正確的分辨率文件夾下贡翘?

只針對手機設(shè)備的分辨率是xxhdpi做分析,其余分辨率自行思考砰逻,targetDensity = 480

分辨率是xxhdpi的圖片鸣驱,放在正確的drawable-xxhdpi文件夾下。
inDensity = 480蝠咆,targetDensity = 480踊东,圖片縮放比例 scale = 1

分辨率是xxhdpi的圖片,放在錯誤的drawable-xhdpi文件夾下刚操。
inDensity = 320闸翅,targetDensity = 480,圖片縮放比例 scale = 1.5

內(nèi)存大小從  width * height * pointMemeory 變成了 (width * 1.5 + 0.5) * (height * 1.5 + 0.5) * pointMemory菊霜,
導致占用的內(nèi)存增加了許多

一個dpi為320的手機設(shè)備坚冀,加載一張drawable-xxxhdpi下的圖片,占用的內(nèi)存和加載一張drawable-xhdpi下的圖片一樣嗎占卧?

當然一樣遗菠,加載高分辨率圖片時,圖片是會縮小的华蜒,圖片大小會縮放到和其他分辨率一致辙纬,故而占用內(nèi)存大小是一致的

既然我們手機加載不同分辨率目錄下的同一圖片,占用內(nèi)存大小都是一致的叭喜,那為什么還要創(chuàng)建多個drawable目錄呢 贺拣? 直接使用drawable-xxxhdpi,豈不是還可以縮小包體積捂蕴?

這里涉及到一個問題俺夕,就是xml文件中我們使用imageView控件贡茅,直接通過src屬性引用圖片資源的場景.
而通過xml文件引用圖片資源,占用的內(nèi)存大小如下:
因為通過src屬性,我們在獲取對應的drawable時捌议,設(shè)置的density為0,density為0的情況下圣蝎,
圖片的寬高是不會進行任何的縮放的,故而占用內(nèi)存大小也不會有任何的改變腕够。
內(nèi)存占用大小 = 圖片原始寬 * 圖片原始高 * 色深

所以 如果我是320的手機,我加載xhdpi下的圖片舌劳,假設(shè)圖片是 18*12  argb8888 帚湘,那內(nèi)存占用就是 18*12*4
但如果我只在xxxhdpi下有圖片,假設(shè)圖片是36*24 甚淡, 那內(nèi)存占用就是36*24 * 4大诸,內(nèi)存占用一下就翻了4倍.

而我們drawable目錄下的 圖片,幾乎都是用于xml引用圖片贯卦,很少會用bitmapFactory創(chuàng)建资柔,
所以還是每個文件夾下都放對應分辨率的圖片是最好的

圖片的釋放

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脸侥,隨后出現(xiàn)的幾起案子建邓,更是在濱河造成了極大的恐慌,老刑警劉巖睁枕,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官边,死亡現(xiàn)場離奇詭異,居然都是意外死亡外遇,警方通過查閱死者的電腦和手機注簿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跳仿,“玉大人诡渴,你說我怎么就攤上這事》朴铮” “怎么了妄辩?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長山上。 經(jīng)常有香客問我眼耀,道長,這世上最難降的妖魔是什么佩憾? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任哮伟,我火速辦了婚禮,結(jié)果婚禮上妄帘,老公的妹妹穿的比我還像新娘楞黄。我一直安慰自己,他們只是感情好抡驼,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布鬼廓。 她就那樣靜靜地躺著,像睡著了一般致盟。 火紅的嫁衣襯著肌膚如雪桑阶。 梳的紋絲不亂的頭發(fā)上柏副,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音蚣录,去河邊找鬼。 笑死眷篇,一個胖子當著我的面吹牛萎河,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蕉饼,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼虐杯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昧港?” 一聲冷哼從身側(cè)響起擎椰,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎创肥,沒想到半個月后达舒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡叹侄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年巩搏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趾代。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡贯底,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撒强,到底是詐尸還是另有隱情禽捆,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布飘哨,位于F島的核電站胚想,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏杖玲。R本人自食惡果不足惜顿仇,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摆马。 院中可真熱鬧臼闻,春花似錦、人聲如沸囤采。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕉毯。三九已至乓搬,卻和暖如春思犁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背进肯。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工激蹲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人江掩。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓学辱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親环形。 傳聞我的和親對象是個殘疾皇子策泣,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容