android 选择图片 剪裁 拍照 兼容所有版本的代码
来源:互联网 发布:ae2015中文下载mac 编辑:程序博客网 时间:2024/04/29 03:46
在做项目的时候,总是避免不了头像的剪裁和选取,然而4.4以后 以前能够使用的代码 ,也用不了了。 做下记录吧。因为下面代码我用了几次了。
以后直接复制粘贴。
1.拍照 和选择图片
选择图片
<span style="white-space:pre"></span>intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");startActivityForResult(intent, GALLERY_REQUEST_CODE);
拍照
<span style="white-space:pre"></span>intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, CAMERA_REQUEST_CODE);
2.获取系统传来的值
标记符
private static int CAMERA_REQUEST_CODE = 1;private static int GALLERY_REQUEST_CODE = 2;private static int CROP_REQUEST_CODE = 3;
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == CAMERA_REQUEST_CODE) {if (data == null) {return;} else { //拍照Bundle extras = data.getExtras();if (extras != null) {Bitmap bm = extras.getParcelable("data");Uri uri = saveBitmap(bm);startImageZoom(uri);}}} else if (requestCode == GALLERY_REQUEST_CODE) {if (data == null) {//相册return;}Uri uri;uri = data.getData();Uri fileUri = convertUri(uri);startImageZoom(fileUri);} else if (requestCode == CROP_REQUEST_CODE) {if (data == null) {return;}//剪裁后的图片Bundle extras = data.getExtras();if (extras == null) {return;}Bitmap bm = extras.getParcelable("data");ShowImageView(bm);}}
图片选取后 根据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();return null;} catch (IOException e) {e.printStackTrace();return null;}}
保存图片 记得加权限
private Uri saveBitmap(Bitmap bm) {File tmpDir = new File(Environment.getExternalStorageDirectory()+ "/xiaoxin");if (!tmpDir.exists()) {tmpDir.mkdir();}File img = new File(tmpDir.getAbsolutePath() + "love.png");try {FileOutputStream fos = new FileOutputStream(img);bm.compress(Bitmap.CompressFormat.PNG, 85, fos);fos.flush();fos.close();Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_SHORT).show();return Uri.fromFile(img);} catch (FileNotFoundException e) {Toast.makeText(MainActivity.this, "失敗了", Toast.LENGTH_SHORT).show();e.printStackTrace();return null;} catch (IOException e) {e.printStackTrace();Toast.makeText(MainActivity.this, "失敗了", Toast.LENGTH_SHORT).show();return null;}}
3.剪裁图片
/** * 剪裁图片 * * @param uri */private void startImageZoom(Uri uri) {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", 150);intent.putExtra("outputY", 150);intent.putExtra("return-data", true);startActivityForResult(intent, CROP_REQUEST_CODE);}
4.结束语:
记得加权限哦 ,在剪裁完图片后 会有一个 Bitmap 对象。你可以拿来设置到ImageView上面去。也可以直接传送到服务器去。有问题的话 请留言
0 0
- android 选择图片 剪裁 拍照 兼容所有版本的代码
- android完美实现 拍照 选择图片 剪裁等代码分享
- android选择图片、拍照、并剪裁
- android 拍照和相册选择照片之后。剪裁图片。
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android中从SD卡中/拍照选择图片并进行剪裁的方法
- Android:从SD卡/拍照选择图片并进行剪裁的方法
- Android中拍照和从相册选择图片,并对选择的图片进行剪裁的例子
- android拍照图片选取与图片剪裁
- android开发 通过拍照或选择本地图片并剪裁图片设置成头像
- Android拍照或选择本地图片并剪裁图片设置成头像
- Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片
- Android 按照比例剪裁图片,以及拍照并剪裁
- [推荐视频教程]-[Java][传智播客 俄罗斯方法游戏开发 视频教程][avi]
- 15第十四周项目一——小玩文件
- Introduction to RTP Proxy (1)
- Android 优化电池使用时间 ——监控电池电量和充电状态
- 新建了CSDN博客,希望记录我的android学习历程
- android 选择图片 剪裁 拍照 兼容所有版本的代码
- java动态代理
- POJ 1700----Crossing River(过桥问题)
- 初识七层
- POJ1129 Channel Allocation
- TLD(Tracking-Learning-Detection)学习与源码理解之(四)
- 常见MFC UI界面库
- How to understand scope in JavaScript closure
- Android 四种更新UI方式