本文主要是介绍Android调用本地相册选择图片并剪切后展示和缓存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
直接来代码(注释足够清楚了):
选择图片.setOnClickListener(new View.OnClickListener(){gallery();});private void gallery() {// 选择本地图片Intent intent = new Intent(Intent.ACTION_PICK,null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");// 开启一个带有返回值的ActivitystartActivityForResult(intent, 2);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == 2) {if (data != null) {// 得到图片的路径Uri uri = data.getData();crop(uri);}} else if (requestCode == 3) {// 从剪切图片返回的数据if (data != null) {getPic(data);}}super.onActivityResult(requestCode, resultCode, data);}/** 剪切图片*/private void crop(Uri uri) {// 裁剪图片Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");// 裁剪框的比例,1:1intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// 裁剪后输出图片的尺寸大小// 这里吐槽下:X Y的值在返回的是data的时候,不同的手机能够承受的上限是不一样的,// 举个例子:之前写到405:VIVO X6没有任何问题,而在小米note4上就抛了SecurityException!intent.putExtra("outputX", 250);intent.putExtra("outputY", 250);// intent.putExtra("outputFormat", "PNG");// 图片格式
// intent.putExtra("noFaceDetection", true);// 取消人脸识别intent.putExtra("return-data", true);// 开启一个带有返回值的ActivitystartActivityForResult(intent, 3);}/*** @author xixili* created at 2016/2/27 14:32* 获取剪切之后的图片*/private void getPic(Intent picdata) {Bundle extras = picdata.getExtras();if (extras != null) {Bitmap photo = extras.getParcelable("data");//转换为Bitmap类型if(photo!=null){aCache.put("ShakeBgFromUser",photo); //保存在缓存里,ACache是我用的一个缓存框架imageView.setImageBitmap(photo);//展示}}}
这篇关于Android调用本地相册选择图片并剪切后展示和缓存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!