Bitmap加载
在android中可以使用BitmapFactory类提供的四类方法:decodeFile,decodeResource,decodeStream,decodeByteArray来完成一个bitmap的加载。其中decodeFile,decodeResource是间接调用decodeStream实现的。
Bitmap的高效加载
Bitmap的高效加载是通过BitmapFactory.Options来实现。
其中BitmapFactory.Options可以用来缩放图片的大小,用到的是inSampleSize参数。
InSampleSize=1,表示图片大小为原始大小。
inSampleSize=2,表示图片宽高均为原始图片大小的1/2,则像素数为原来图片的1/4,则其占用的内存也为原来的1/4。
注意inSampleSize取值应为2的指数倍,当inSampleSize=3时系统会取一个接近3的数2来代替。
举例:
public static Bitmap pathToBitmap(String path ,int inSampleSize) { BitmapFactory.Options options =new BitmapFactory.Options(); // true 不加载图片到内存,知获取bitmap 的 宽 高 options.inJustDecodeBounds=true; //加载 获取图片属性 BitmapFactory.decodeFile(path,options); options.inSampleSize=inSampleSize; //返回缩略的bitmap 到内存 options.inJustDecodeBounds=false; Bitmap bitmap=BitmapFactory.decodeFile(path, options); return bitmap; }
其中inJustDecodeBounds参数设为true时,表示获取图片的原始宽高,而不取加载图片到内存。
一般inSampleSize值是通过原始图片的宽高再根据采样率的规则计算出来的。