直接粘贴就能用
private Bitmap ImageSizeCompress(Uri uri){ inputStream Stream = null; inputStream inputStream = null; try { //根据uri获取图片的流 inputStream = getContentResolver().openinputStream(uri); BitmapFactory.Options options = new BitmapFactory.Options(); //options的in系列的设置了,injustdecodebouond只解析图片的大小,而不加载到内存中去 options.inJustDecodeBounds = true; //1.如果通过options.outHeight获取图片的宽高,就必须通过decodestream解析同options赋值 //否则options.outheight获取不到宽高 BitmapFactory.decodeStream(inputStream,null,options); //2.通过 btm.getHeight()获取图片的宽高就不需要1的解析,我这里采取第一张方式// Bitmap btm = BitmapFactory.decodeStream(inputStream); //以屏幕的宽高进行压缩 displayMetrics displayMetrics = getResources().getdisplayMetrics(); int heightPixels = displayMetrics.heightPixels; int wIDthPixels = displayMetrics.wIDthPixels; //获取图片的宽高 int outHeight = options.outHeight; int outWIDth = options.outWIDth; //heightPixels就是要压缩后的图片高度,宽度也一样 int a = (int) Math.ceil((outHeight/(float)heightPixels)); int b = (int) Math.ceil(outWIDth/(float)wIDthPixels); //比例计算,一般是图片比较大的情况下进行压缩 int max = Math.max(a, b); if(max > 1){ options.inSampleSize = max; } //解析到内存中去 options.inJustDecodeBounds = false;// 根据uri重新获取流,inputstream在解析中发生改变了 Stream = getContentResolver().openinputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(Stream, null, options); return bitmap; } catch (Exception e) { e.printstacktrace(); }finally { try { if(inputStream != null) { inputStream.close(); } if(Stream != null){ Stream.close(); } } catch (IOException e) { e.printstacktrace(); } } return null; }
引用
Bitmap bitmap = ImageSizeCompress(uri);
总结 以上是内存溢出为你收集整理的Android把uri图片转为bitmap全部内容,希望文章能够帮你解决Android把uri图片转为bitmap所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)