首页 > 代码库 > Android加载大图片到内存
Android加载大图片到内存
加载大图片到内存
步骤:
步骤一:
获取品屏幕的宽高数据;[HD1]
步骤二:
获取图片的宽高;[HD2]
步骤三:
计算屏幕与图片的宽高比例,按照差距最大的进行缩放处理;[HD3]
步骤四:
图片的缩放处理;[HD4]
[HD1]//获取手机的屏幕的窗体大小
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
windowHeight = display.getHeight();
windowWidth = display.getWidth();
[HD2]//图片解析配置的类
Options options = new Options();
//不会真的进行图片解析,只是获取到图片的头信息:宽X高日期等
options.inJustDecodeBounds =true;
//设置图片解析类的目标文件
BitmapFactory.decodeFile("/sdcard/x.jpg", options);
//获取图片的高X宽
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
System.out.println("图片的高:" + imageHeight + "图片的宽:" + imageWidth);
[HD3]//使用图片的宽高和屏幕的宽高进行计算,算出比例
int scaleX = imageWidth /windowWidth;
int scaleY = imageHeight /windowHeight;
//缺省的比例
int scale = 1;
if (scaleX > scaleY & scaleY >= 1) {
scale = scaleX;
}
if (scaleY > scaleX & scaleX >= 1) {
scale = scaleY;
}
[HD4] // 设置图片解析器真的去解析图片
options.inJustDecodeBounds =false;
//设置解析的采样率,设置的值是缩放比例1/scale
options.inSampleSize = scale;
//再次获取图片位图,并设置采样率
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/x.jpg", options);
iv.setImageBitmap(bitmap);