# Bitmap局部解碼
[官網文檔-BitmapRegionDecoder](https://developer.android.com/reference/android/graphics/BitmapRegionDecoder?hl=en) ,`BitmapRegionDecoder` 可用于解碼圖像中的矩形區域。當原始圖像很大且只需要部分圖像時,`BitmapRegionDecoder` 尤其有用。 要創建 `BitmapRegionDecoder`,請調用 `newInstance()` 。給定一個 `BitmapRegionDecoder`,用戶可以重復調用 `encodeRegio()`以獲取指定區域的解碼后的 `Bitmap` 。
```java
try {
inputStream = getResources().getAssets().open("qq.jpg");
BitmapRegionDecoder mRegionDecoder = BitmapRegionDecoder.newInstance(inputStream, false);
BitmapFactory.Options sOptions = new BitmapFactory.Options();
sOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
sOptions.inSampleSize = 2;
Rect mRect = new Rect();
mRect.top = 0;
mRect.left = 0;
mRect.right = 100;
mRect.bottom = 100;
Bitmap bitmap = mRegionDecoder.decodeRegion(mRect, sOptions);
//bitmap.getByteCount()=40000
} catch (IOException e) {
e.printStackTrace();
}
```
這里需要注意的是 `mRect` 的寬高不能太大,否則加載得到的 `Bitmap` 的時候也會出現 `OOM` 的異常。
*****
文章到這里就全部講述完啦,若有其他需要交流的可以留言哦~!~!
想閱讀作者的更多文章,可以查看我 [個人博客](http://dandanlove.com/) 和公共號:
- 寫在前面的話
- Java
- 基礎
- Double的比較
- 小數怎么用二進制表示
- 多線程
- 并發和并行
- 線程池
- 線程池背景
- 線程池構造
- 任務阻塞隊列
- Flutter
- 基礎知識
- Dart基礎
- Android
- 項目架構
- View
- 非UI線程更新View
- AlarmManager
- 對比postDelaryed和Timer
- Bitmap
- 加載100M的圖片卻不撐爆內存
- Bitmap壓縮
- Bitmap局部解碼
- 計算圖片的內存占用
- Android動畫
- Android動畫類型
- Android動畫原理
- 屬性動畫
- 幀動畫
- 補間動畫
- 使用動畫的注意事項
- Android新特性
- 權限組
- Android23(Marshmallow)-6.0
- Android24(Nougat)-7.0
- Android26(Oreo)-8.0
- Android28(Pie)-9.0
- Android29(Q)-10.0
- AndroidX遷移
- Kotlin
- 關鍵字
- Kotlin操作符
- CoroutineScope
- Flow
- CoroutineException