700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 解决小米miui系统调用系统裁剪图片功能崩溃失败的问题

解决小米miui系统调用系统裁剪图片功能崩溃失败的问题

时间:2020-05-10 00:20:45

相关推荐

解决小米miui系统调用系统裁剪图片功能崩溃失败的问题

项目中选择图片作为头像,都要经过剪裁的过程。一般我们都调用系统剪裁的方法。不过该方法在其它系统上都显示正常,但是在miui系统上就出错了。经测试发现其他系统

cropBitmap = data.getParcelableExtra("data");

方法都是有值的,而miui系统却没有。查资料发现miui系统默认的裁剪图片可能裁剪得过大,或对return-data分配的资源不足,造成return-data失败。

失败的剪裁方法如下:

Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪intent.putExtra("crop", "true");// aspectX aspectY 是宽高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX outputY 是裁剪图片宽高intent.putExtra("outputX", 200);intent.putExtra("outputY", 200);intent.putExtra("outputFormat", pressFormat.PNG.toString());intent.putExtra("noFaceDetection", true);intent.putExtra("return-data", true);startActivityForResult(intent,REQUE_CODE_CROP);

解决方案:

剪裁后保存资源路径uri,在onActivityResult()方法中再提取uri图片转化成bitmap即可。

修改后的方法如下:

Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪intent.putExtra("crop", "true");// aspectX aspectY 是宽高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX outputY 是裁剪图片宽高intent.putExtra("outputX", 200);intent.putExtra("outputY", 200);intent.putExtra("outputFormat", pressFormat.PNG.toString());intent.putExtra("noFaceDetection", true);/***此方法返回的图片只能是小图片(sumsang测试为高宽160px的图片)*故只保存图片Uri,调用时将Uri转换为Bitmap,此方法还可解决miui系统不能return data的问题*/// intent.putExtra("return-data", true);uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + "small.jpg");intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile);startActivityForResult(intent,REQUE_CODE_CROP);

try {cropBitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(uritempFile));} catch (FileNotFoundException e) {e.printStackTrace();}

好了,这样就解决了,如果有更好的方法欢迎留言!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。