真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在運行時獲取Bitmap的大小

這篇文章主要介紹了如何在運行時獲取Bitmap的大小的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇如何在運行時獲取Bitmap的大小文章都會有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯(lián)建站主營平房網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),平房h5微信平臺小程序開發(fā)搭建,平房網(wǎng)站營銷推廣歡迎平房等地區(qū)企業(yè)咨詢

一、如何在運行時獲取Bitmap的大???

  • 獲取圖片實際需要的內(nèi)存大小

   
   
   public final int getByteCount() {if(mRecycled) {return 0;}return getRowBytes() * getHeight();}
  • 圖片實際占用的內(nèi)存大小

因為存在一個復(fù)用的場景,比如之前已經(jīng)開辟了400KB的大小用來顯示圖片A,現(xiàn)在我們需要顯示300KB的圖片B,而且圖片A已經(jīng)不需要顯示了,那么可能就會將之前開辟的400KB用來顯示圖片B,這樣就不需要重新開辟新的內(nèi)存,所以圖片B實際占用的內(nèi)存400KB。

   
   
   public final int getAllocationByteCount() {if(mRecycled) {return 0;}return nativeGetAllocationByteCount(mNativePtr);}

二、圖片的來源

  • Assets中的圖片

     asstes中的文件基本等同于我們從SDCard中加載的圖片,所以就不再單獨講解了。

舉個例子:我們以寬高為112px * 131px像素的png圖片為例(文件大小為20kb),如果我們使用下面的方式加載到內(nèi)存中:

BitmapFactory.decodeStream(assets.open("test.png"));

實際上展示的是:以ARGB_8888的格式加載到內(nèi)存中,那么最終的大小是112*131*4 = 58688KB。實際上就是我們圖片需要顯示的總的像素點數(shù)乘以單個像素點所占用的內(nèi)存,因為ARGB_8888,可以看出來一個像素的四個通道分別需要8位來描述,所以一個像素點需要4個字節(jié)的內(nèi)存,所以總的像素點數(shù)乘以4就是這張圖所占用的總內(nèi)存了。

所以,意味著圖片的內(nèi)存大小除了像素大小外,還和加載到內(nèi)存的格式有關(guān),比如我們將上面的圖片換成RGB_565去加載,那么我們得出的內(nèi)存就應(yīng)該是:112*131*[(5_6+5)/8] = 112*131*2 = 29344個字節(jié),足足比之前小了一半的大小。

  • Drawable目錄中的圖片

     當我們將圖片放到不同的drawable目錄中,最后顯示出來占用的實際像素是有一定的縮放關(guān)系的,還是以112*131px的圖片為例:

如何在運行時獲取Bitmap的大小

這么說吧,如果將上面的圖片放到hdpi目錄下,然后以ARGB_8888加載到內(nèi)存中占用的內(nèi)存大小算法就如下:

(112÷1.5)×(131÷1.5)× 3 × 4 = 77256字節(jié)

注意如果放在-nodpi中,那么圖片在不同DPI的設(shè)備中不會做任何縮放,都只會以112×131的像素顯示,所以在不同手機中永遠占用相同的內(nèi)存。

三、優(yōu)化圖片占用的內(nèi)存體積

  • 使用inSampleSize對圖片進行采樣、壓縮

  • 使用矩陣變化來改變圖片大小

  • 使用RGB_565來加載非透明圖片

  • 使用 9-patch圖片來做背景圖

  • 使用VectorDrawable

  • 能不用圖片就不用圖片

關(guān)于“如何在運行時獲取Bitmap的大小”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“如何在運行時獲取Bitmap的大小”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當前標題:如何在運行時獲取Bitmap的大小
標題鏈接:http://weahome.cn/article/pdjjch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部