加载大图片到内存

// 这种方式把所有的像素点都加载内存,vm虚拟机扛不住.会内存溢出
// Bitmap bitmap = BitmapFactory.decodeFile("mnt/sdcard/hh.jpg");//加载本地图片	
// iv.setImageBitmap(bitmap);
		
// 用户识别的出来的图形,受到设备的分辨率的限制.		
// 只要我们显示的图形比手机的分辨率高,或者跟手机分辨率一致,用户就看不出来图形的质量的缩放了.		
BitmapFactory.Options opts = new Options();// 解码图片的配置选项		
opts.inJustDecodeBounds = true;// 不去真实的解析bitmap,而是查询bitmap的宽高信息	
BitmapFactory.decodeFile("mnt/sdcard/hh.jpg", opts);//此时返回的bitmap为null	
int width = opts.outWidth;		
int height = opts.outHeight;	
System.out.println("图片宽度width:" + width);		
System.out.println("图片高度height:" + height);		
// 得到手机屏幕的宽高		
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);		
int screenWidth = wm.getDefaultDisplay().getWidth();	
int screenHeight = wm.getDefaultDisplay().getHeight();	
System.out.println("屏幕宽度width:" + screenWidth);		
System.out.println("屏幕高度height:" + screenHeight);	
//计算缩放比例	
int dx = width / screenWidth;		
int dy = height / screenHeight;		
int scale = 1;		
if (dx > dy && dy > 1) {			
scale = dx;		
}	
if (dy > dx && dx > 1) {			
scale = dy;		
}	
System.out.println(scale);		
//缩放的方式把图片加载到手机内存		
opts.inSampleSize = scale;//指定缩放比例	
opts.inJustDecodeBounds = false;// 真实的解析bitmap	
Bitmap bitmap = BitmapFactory.decodeFile("mnt/sdcard/hh.jpg", opts);		
iv.setImageBitmap(bitmap);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值