(了解)计算机图形表示原理
图片:宽 高
图片是由每个像素点来组成 像素点:小方块
图片的大小:宽*高*每个像素点的大小
(掌握)从SdCard加载图片显示
(了解)加载大图片OOM异常
内存溢出
本身的大小:2.65MB
dalvik vm:默认16M
解决的思路:
•(掌握)缩放加载大图片
/*获取图片的宽高,这里要设置Options.inJustDecodeBounds=true,这时候decode的bitmap为null, 只是把图片的宽高放在Options里,然后第二步就是设置合适的压缩比例inSampleSize, 这时候获得合适的Bitmap.*/
//进行二次采样
//只加载图片宽高 第一次采样
BitmapFactory.Options options = new BitmapFactory.Options();
//如果设置为true,不获取图片,不分配内存,但会返回图片的高度宽度信息 不加载图片大小
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file.getAbsolutePath(), options);
//获取图片的宽高
int outWidth = options.outWidth;
int outHeight = options.outHeight;
//获取屏幕宽高
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
//计算宽高比率
int scale = 0;
int scaleX = outWidth / width;
int scaleY = outHeight / height;
//取比率值大的
scale = scaleX > scaleY ? scaleX : scaleY;
//第二次采样
options.inJustDecodeBounds = false;
options.inSampleSize = scale;
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
//最后把值返回给你需要的地方