當前位置:編程學習大全網 - 源碼下載 - Bitmap使用詳解

Bitmap使用詳解

用到的圖片不僅僅包括.png、.gif、.9.png、.jpg和各種Drawable系對象,還包括位圖Bitmap

圖片的處理也經常是影響著壹個程序的高效性和健壯性。

為什麽不直接用Bitmap傳輸?

位圖文件雖好,但是非壓縮格式,占用較大存儲空間。

Bitmap主要方法有:獲取圖像寬高、釋放,判斷是否已釋放和是否可修改,壓縮、創建制定位圖等功能

用於從不同的數據源(如文件、輸入流、資源文件、字節數組、文件描述符等)解析、創建Bitmap對象

允許我們定義圖片以何種方式如何讀到內存。

推薦閱讀: Android - Bitmap-內存分析

註意事項:

decodeFileDescriptor比decodeFile高效

查看源碼可以知道

替換成

建議采用decodeStream代替decodeResource。

因為BitmapFactory.decodeResource 加載的圖片可能會經過縮放,該縮放目前是放在 java 層做的,效率比較低,而且需要消耗 java 層的內存。因此,如果大量使用該接口加載圖片,容易導致OOM錯誤,BitmapFactory.decodeStream 不會對所加載的圖片進行縮放,相比之下占用內存少,效率更高。

這兩個接口各有用處,如果對性能要求較高,則應該使用 decodeStream;如果對性能要求不高,且需要 Android 自帶的圖片自適應縮放功能,則可以使用 decodeResource。

推薦閱讀:[ BitmapFactory.decodeResource加載圖片縮小的原因及解決方法

canvas和Matrix可對Bitmap進行旋轉、放縮、平移、切錯等操作

可以用Bitmap.onCreateBitmap、Canvas的clipRect和clipPath等等方式

推薦閱讀: android自定義View學習4--圖像剪切與變換

對初始化Bitmap對象過程中可能發生的OutOfMemory異常進行了捕獲。如果發生了OutOfMemory異常,應用不會崩潰,而是得到了壹個默認的Bitmap圖。

如果不進行緩存,盡管看到的是同壹張圖片文件,但是使用BitmapFactory類的方法來實例化出來的Bitmap,是不同的Bitmap對象。緩存可以避免新建多個Bitmap對象,避免內存的浪費。

如果圖片像素過大,使用BitmapFactory類的方法實例化Bitmap的過程中,需要大於8M的內存空間,就必定會發生OutOfMemory異常。

可以將圖片縮小,以減少載入圖片過程中的內存的使用,避免異常發生。

推薦閱讀:

Bitmap詳解與Bitmap的內存優化

  • 上一篇:區塊鏈為什麽會分叉
  • 下一篇:股票技術面分析
  • copyright 2024編程學習大全網