AndroidBitmap的加载与缓存-创新互联
Android系统中图片一般用Bitmap对象表示,它支持png,jpg等常见格式。通常情况下图片的体积都比较大,单个应用允许使用的内存又是有限的,所以我们需要采取一些手段减少内存占用并提高加载速度。
创新互联公司是工信部颁发资质IDC服务器商,为用户提供优质的珉田数据中心服务1、图片加载
SDK提供了BitmapFactory类供我们加载图片,常用的方法有这么几个:
- BitmapFactory.decodeFile :从文件加载。
- BitmapFactory.decodeByteArray :从字节数组加载。
- BitmapFactory.decodeStream :从输入流加载。
- BitmapFactory.decodeResource :从资源文件加载。
假设我们用ImageView显示图片,通常它的尺寸要比图片的尺寸小很多,那么把图片整个加载进内存显然是没有必要的。在图形学上有个名词叫“下采样”,作用就是降低图像的分辨率,使其符合显示区域的大小。通过BitmapFactory.Options类,我们也可以实现同样的功能。这里主要用到了它的 inSampleSize 参数,如果它的值是1,那么采样后的图片跟原图一致,如果是2,那么采样后的图片长和宽都是原来的一半,占用的内存也就是原来的四分之一。
public static Bitmap decodeSampleBitmapFromBytes(byte[] data) { final BitmapFactory.Options options = new BitmapFactory.Options(); // inJustDecodeBounds为true时仅解析图片原始信息,并不会真正加载图片。 options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(data, 0, data.length, options); // 此时图片的宽高可以通过options.outWidth和options.outHeight获取到,我们 // 可以根据自己的需求计算出采样比。 options.inSampleSize = 1; // inJustDecodeBounds设置为fales,加载图片到内存中。 options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res, resId, options); }
网页名称:AndroidBitmap的加载与缓存-创新互联
文章路径:http://scyanting.com/article/dpepgp.html