加载大图到应用内存时所需的缩放步骤

来源:互联网 发布:讲诚信 知礼仪 编辑:程序博客网 时间:2024/06/10 21:54

当应用需要加载图片时,很有可能图片会比系统的堆内存要大,如果不进行缩放的话会导致应用出错。

//首先得到手机屏幕的宽高WindowManager wm=(WindowManager)getSystemService(WINDOW_SERVICE);int windowH=wm.getDefaultDisplay().getHeight();int windowW=wm.getDefaultDisplay().getWidth();//android 3.0以后可用Point outSize=new Point();wm.getDefaultDisplay().getSize(outSize);int windowH=outSize.x;int windowW=outSize.y;

系统上固定的堆内存应该是16M,加载一张高像素的图片很有可能会超过这个大小
//图片解析的配置BitmapFactory.Options= opts=new Options();//true代表不进行图片解析opts.inJustDecodeBounds=true;//获取图片的高宽BitmapFactory.decodFile("图片路径名称",opts);int imageH=opts.outHeight;int imageW=opts.outWidth;//计算缩放比例int scaleX=imageH/windowH;int scaleY=imageW/windowW;int scale=1;if(scaleX>scaleY & scaleY>=1){scale=scaleX;}if(scaleY>scaleX & scaleX>=1){scale=scaleY;}//解析图片opts.inJustDecodeBounds=false;opts.inSampleSize=sacle;//现在得到了图片bitmapBitmap bitmap=BitmapFactory.decodFile("图片路径名称",opts);//假设程序有一个ImageView,这样就加载了一张高像素的图片了ImageView iv=setImageBitmap(bitmap);



0 0