android 选择图片 剪裁 拍照 兼容所有版本的代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android 选择图片 剪裁 拍照 兼容所有版本的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2964字,纯文字阅读大概需要5分钟。
内容图文
前言,版本兼容问题主要是由于4.4以前和4.4以后的Uri的格式不同所造成的错误
资料 Android 4.4从图库选择图片,获取图片路径并裁剪
1.拍照 和选择图片
①选择图片
1 intent = new Intent(Intent.ACTION_GET_CONTENT); 2 intent.setType("image/*"); 3 startActivityForResult(intent, GALLERY_REQUEST_CODE);
②拍照
1 intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 2 startActivityForResult(intent, CAMERA_REQUEST_CODE);
2.获取系统传来的值
1 标记符 2 private static int CAMERA_REQUEST_CODE = 1; 3privatestaticint GALLERY_REQUEST_CODE = 2; 4privatestaticint CROP_REQUEST_CODE = 3; 5 6 7 8 @Override 9protectedvoid onActivityResult(int requestCode, int resultCode, Intent data) { 10if (requestCode == CAMERA_REQUEST_CODE) { 11if (data == null) { 12return; 13 } else { //拍照14 Bundle extras = data.getExtras(); 15if (extras != null) { 16 Bitmap bm = extras.getParcelable("data"); 17 Uri uri = saveBitmap(bm); 18 startImageZoom(uri); 19 } 20 } 21 } elseif (requestCode == GALLERY_REQUEST_CODE) { 22if (data == null) {//相册23return; 24 } 25 Uri uri; 26 uri = data.getData(); 27 Uri fileUri = convertUri(uri); 28 startImageZoom(fileUri); 29 } elseif (requestCode == CROP_REQUEST_CODE) { 30if (data == null) { 31return; 32 }//剪裁后的图片33 Bundle extras = data.getExtras(); 34if (extras == null) { 35return; 36 } 37 Bitmap bm = extras.getParcelable("data"); 38 ShowImageView(bm); 39 } 40 }
3.图片选取后 根据Url 转成流 并保存
private Uri convertUri(Uri uri) { InputStream is = null; try { is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is); is.close(); return saveBitmap(bitmap); } catch (FileNotFoundException e) { e.printStackTrace(); returnnull; } catch (IOException e) { e.printStackTrace(); returnnull; } }
4.保存图片 记得加权限
1 private Uri saveBitmap(Bitmap bm) { 2 File tmpDir = new File(Environment.getExternalStorageDirectory() 3 + "/xiaoxin"); 4if (!tmpDir.exists()) { 5 tmpDir.mkdir(); 6 } 7 File img = new File(tmpDir.getAbsolutePath() + "love.png"); 8try { 9 FileOutputStream fos = new FileOutputStream(img); 10 bm.compress(Bitmap.CompressFormat.PNG, 85, fos); 11 fos.flush(); 12 fos.close(); 13 Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_SHORT).show(); 14return Uri.fromFile(img); 15 } catch (FileNotFoundException e) { 16 Toast.makeText(MainActivity.this, "失敗了", Toast.LENGTH_SHORT).show(); 17 e.printStackTrace(); 18returnnull; 19 } catch (IOException e) { 20 e.printStackTrace(); 21 Toast.makeText(MainActivity.this, "失敗了", Toast.LENGTH_SHORT).show(); 22returnnull; 23 } 2425 }
5.剪裁图片
1 /** 2 * 剪裁图片 3 * 4 * @param uri 5 */ 6 private void startImageZoom(Uri uri) { 7 Intent intent = new Intent("com.android.camera.action.CROP"); 8 intent.setDataAndType(uri, "image/*"); 9 intent.putExtra("crop", "true"); 10 intent.putExtra("aspectX", 1); 11 intent.putExtra("aspectY", 1); 12 intent.putExtra("outputX", 150); 13 intent.putExtra("outputY", 150); 14 intent.putExtra("return-data", true); 15 startActivityForResult(intent, CROP_REQUEST_CODE); 16 }
原文:http://www.cnblogs.com/dukc/p/5123201.html
内容总结
以上是互联网集市为您收集整理的android 选择图片 剪裁 拍照 兼容所有版本的代码全部内容,希望文章能够帮你解决android 选择图片 剪裁 拍照 兼容所有版本的代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。