调用Android的相机与图库并进行剪切
2016-06-16 19:38
513 查看
ImageView iv; private File file; /** * 点击按钮选择照片 */ private void doClick(){ //图库选图的intent Intent intent1 = new Intent(Intent.ACTION_PICK); intent1.setDataAndType(Media.EXTERNAL_CONTENT_URI, "image/*"); //相机拍照 Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),System.currentTimeMillis()+".jpg"); Uri imageUri = Uri.fromFile(file); intent2.putExtra(MediaStore.EXTRA_OUTPUT, imageUri ); Intent intent = Intent.createChooser(intent1, "选取头像"); intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{intent2}); startActivityForResult(intent,101); } /*** * 选择头像后返回的结果 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { try { super.onActivityResult(requestCode, resultCode, data); if(requestCode==101 && resultCode==RESULT_OK){ Uri uri = null; if(data!=null){ //图库选图回来 uri = data.getData(); }else{ //拍照回来的 uri = Uri.fromFile(file); } crop(uri); } if(requestCode==102 && resultCode==RESULT_OK){ //安卓的截图程序返回的截图结果 Bundle bundle = data.getExtras(); Bitmap bitmap = bundle.getParcelable("data"); if(bitmap!=null){ iv.setImageBitmap(bitmap); //上传到服务器,拿到服务器保存头像图片的url File cropfile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),System.currentTimeMillis()+".jpg"); bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(cropfile)); }else{ Toast.makeText(this, "头像截取不成功,请重试", 1).show(); } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 把uri指向的图片进行截取操作 * @param uri */ private void crop(Uri uri) { //发送隐式意图,调用android自带的图片截取界面 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", true); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("return-data", true); startActivityForResult(intent, 102); }
相关文章推荐
- <Android学习笔记五>Android系统自带样式(android:theme)详解
- android 读取资源文件的数据
- 支付宝支付
- Android Studio 2.2 Preview 2 生成的界面问题
- Android内存泄漏解决方案(OOM)
- Volley
- android开发—Fragment中onCreateView()和onActivityCreated()的区别
- android项目开发中遇到的小而实用的代码
- android学习7#--自定义View之自定义属性
- Android开发:Service
- 转:Android中Context详解 ---- 你所不知道的Context
- 牢骚发完了,还要继续,android 圆形的过渡动画
- android5 Ripple和Reveal动效
- Android实现吸顶效果
- Android 模式对话框提示Dialog
- android开发推荐书籍列表
- Android Studio导入第三方类库的方法
- Android-版本控制 SVN
- Android常用adb命令总结
- Android--安卓着色器(tint)使用实践