Android(安卓)BitmapFactory用法总结
16lz
2021-01-24
BitmapFactory的作用是:Creates Bitmap objects from various sources, including files, streams, and byte-arrays。常用方法如下:
下面列举几个常用实例:
1、使用BitmapFactory实现对Base64格式数据的解码
从网络上获得的图片数据为Base64编码格式,使用BitmapFactory将其转换成Bitmap对象,如下:
private Bitmap stringtoBitmap(String string){ Bitmap bitmap=null; try { byte[] bitmapArray; bitmapArray = Base64.decode(string, Base64.DEFAULT); bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length); } catch (Exception e) { e.printStackTrace(); } return bitmap; }
2、在Activity中将资源图片转换成Bitmap对象
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.arrows_default);
关于OOM内存溢出问题:
使用BitmapFactory生成Bitmap对象时(特别是处理大图片),常常碰到内存溢出问题。以下是几点建议:
1、使用BitmapFactory.decodeStream方法创建bitmap对象,该方法从JNI>>nativeDecodeAsset()来完成decode,从而避免java层decode时的内存开销。
2、利用BitmapFactory.Options的inSampleSize属性设置,缩小图片尺寸。
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); bmpFactoryOptions.inSampleSize = 4;
通过设置inSampleSize 的值,将图片的长宽定义成原图的1 / inSampleSize。
3、适时回收不再使用的bitmap对象,回收方法如下:
if(!bitmap.isRecycled()){ bitmap.recycle(); //回收图片所占的内存 System.gc(); //提醒系统及时回收 }
更多相关文章
- Android使用post方式上传图片到服务器的方法
- android studio 3.0 使用LeakCanary检测内存依赖不上导包导不上
- android 6.0 ConnectionService
- Android(安卓)网易云音乐图片高斯模糊
- Android点击button触发Toast事件,弹出一个小小的消息框,几秒钟之
- 存储容量检测 注意构建StatFs对象的参数合法性
- Android(java)学习笔记133:ListViewProject案例02
- 个性缩放图片NinePatchDrawable
- android桌面快捷方式创建无标题文章