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值是通过原始图片的宽高再根据采样率的规则计算出来的。