# 缩放加载大图片 #
思路:
[1]获取图片的分辨率 2400 * 3200
[2]获取手机的分辨率 320 * 480
[3]计算缩放比 宽 : 7 高 : 6 高正好
按照大的去缩放
实现步骤
[1]获取手机的分辨率
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
[2]获取图片的分辨率
//[2]创建位图工厂的配置参数
BitmapFactory.Options opts = new Options();
//不去真正的解析位图 返回null 但是还能够获取图片的宽和高的信息
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg",opts);
//[3]获取图片的宽和高
int imgWidth = opts.outWidth;
int imgHeight = opts.outHeight;
System.out.println("图片的宽:"+imgWidth+"----"+imgHeight);
[3]计算缩放比
int scale = 1; //定义变量 就是我们的缩放比
int scaleX = imgWidth/width;
int scaleY = imgHeight/height;
if (scaleX>=scaleY && scaleX>scale) {
scale = scaleX;
}
if (scaleY > scaleX && scaleY >scale) {
scale = scaleY;
}
[4]按照缩放比去加载图片
//[5]按照我们计算出来的缩放比进行显示
opts.inSampleSize = scale;
//[6]开始真正的解析位图
opts.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg",opts);
//[7]显示到iv上
iv.setImageBitmap(bitmap);
思路:
[1]获取图片的分辨率 2400 * 3200
[2]获取手机的分辨率 320 * 480
[3]计算缩放比 宽 : 7 高 : 6 高正好
按照大的去缩放
实现步骤
[1]获取手机的分辨率
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
[2]获取图片的分辨率
//[2]创建位图工厂的配置参数
BitmapFactory.Options opts = new Options();
//不去真正的解析位图 返回null 但是还能够获取图片的宽和高的信息
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg",opts);
//[3]获取图片的宽和高
int imgWidth = opts.outWidth;
int imgHeight = opts.outHeight;
System.out.println("图片的宽:"+imgWidth+"----"+imgHeight);
[3]计算缩放比
int scale = 1; //定义变量 就是我们的缩放比
int scaleX = imgWidth/width;
int scaleY = imgHeight/height;
if (scaleX>=scaleY && scaleX>scale) {
scale = scaleX;
}
if (scaleY > scaleX && scaleY >scale) {
scale = scaleY;
}
[4]按照缩放比去加载图片
//[5]按照我们计算出来的缩放比进行显示
opts.inSampleSize = scale;
//[6]开始真正的解析位图
opts.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg",opts);
//[7]显示到iv上
iv.setImageBitmap(bitmap);