# 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/) 和公共号:![振兴书城](https://imgconvert.csdnimg.cn/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzEzMTk4NzktNjEyYzRjNjZkNDBjZTg1NS5qcGc?x-oss-process=image/format,png)
- 写在前面的话
- 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