获取图片资源:相册选择、拍照、裁剪
来源:互联网 发布:菜鸟是什么意思网络 编辑:程序博客网 时间:2024/05/29 10:59
1、从本地相册拿取图片路径:
Intent intentPick = new Intent(Intent.ACTION_PICK); intentPick.setType("image/*"); activity.startActivityForResult(intentPick, CODE_ACTIVITY_REQUEST_GALLERY);
public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { //从相册选择回来 case ImageUtility.CODE_ACTIVITY_REQUEST_GALLERY: if (resultCode == Activity.RESULT_OK) { if (data != null) { //拿取图片的uri Uri uri = data.getData(); //将uri转化为真实的本地图片路径 String path = ImageUtility.getImagePathFromUri(PersonInfoActivity.this, uri); } } break;
/** * 从Uri获取真实图片路径 * * @param context 应用环境变量 * @param uri 图片Uri * @return 图片路径 */ public static String getImagePathFromUri(Context context, Uri uri) { ContentResolver contentResolver = context.getContentResolver(); String path = ""; String[] projection = {MediaStore.Images.Media.DATA}; Cursor cursor = contentResolver.query(uri, projection, null, null, null); if (cursor != null) { int indexColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA); if (cursor.moveToFirst()) { path = cursor.getString(indexColumn); } cursor.close(); } return path; }
2、拍照获得新拍的照片路径:
Intent intentCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intentCapture.putExtra(MediaStore.EXTRA_OUTPUT, getCameraUri()); intentCapture.putExtra(MediaStore.Images.Media.ORIENTATION, 0); activity.startActivityForResult(intentCapture, CODE_ACTIVITY_REQUEST_CAMERA);
/** * 获取拍照照片路径 * * @return 照片路径Uri */ public static Uri getCameraUri() { // 将拍照文件保存在系统默认拍照路径下 File fileDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera"); if (!fileDir.exists()) { fileDir.mkdir(); } File file = new File(fileDir, getCameraPhotoName()); Uri uri = Uri.fromFile(file); mCameraPhotoPathUri = uri; return uri; }
/** * 获取拍照文件名称 * * @return 照片文件名称 */ private static String getCameraPhotoName() { StringBuffer sb = new StringBuffer(PHOTO_FILE_NAME_FONT); sb.append(System.currentTimeMillis()); sb.append(".jpg"); return sb.toString(); }
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case ImageUtility.CODE_ACTIVITY_REQUEST_CAMERA: if (resultCode == Activity.RESULT_OK) { //拿取照片的uri,是启动照相界面时自己手动指定的路径 Uri uriCameraImage = ImageUtility.mCameraPhotoPathUri; String path = uriCameraImage.getPath(); } break;
3、获得裁剪后的图片的路径
/** * 图片裁剪 * * @param activity 调用者界面 * @param path 文件路径 */ public static void cropImage(Activity activity, String path) { Intent intent = new Intent(); intent.setAction("com.android.camera.action.CROP"); intent.putExtra("crop", true); intent.putExtra("scale", true); // 设置源文件URI与类型 intent.setDataAndType(Uri.fromFile(new File(path)), "image/*"); // 设置裁剪框比 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 设置输出尺寸,150*150 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); // 设置是否输出Bitmap。若不设置,则需指定输出URI intent.putExtra("return-data", false); // 设置输出格式 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); // 人脸识别 intent.putExtra("noFaceDetection", false); // 设置输出路径,为默认URI intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(getCachePath(NAME_FILE_AVATAR)))); activity.startActivityForResult(intent, CODE_ACTIVITY_REQUEST_CROP); }
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case ImageUtility.CODE_ACTIVITY_REQUEST_CROP: //如果你裁剪了图片 if (resultCode == Activity.RESULT_OK) { //裁剪完成图片的本地路径,例如“/storage/emulated/0/HomePlus/Cache/ic_avatar.jpeg”(是在裁剪方法里自己手动指定的) String pathAvatar = ImageUtility.getCachePath(ImageUtility.NAME_FILE_AVATAR); } break;
0 0
- 获取图片资源:相册选择、拍照、裁剪
- Android 拍照/相册 获取图片裁剪显示
- Android拍照、相册 获取图片后,裁剪图片
- Android图片裁剪(拍照和从相册选择)
- 图片拍照或相册选择的实现以及裁剪功能
- Android7.0调用系统相机拍照、相册选择图片、裁剪
- iOS 相机拍照、相册获取照片(仿微信) 一一 从相册获取图片、图片裁剪
- 个人界面 < 头像 > 图片选择(相册,拍照)--如何调用系统的相册,裁剪并且上传
- android头像选择(拍照,相册,裁剪)
- android头像选择(拍照,相册,裁剪)
- Android 中拍照、相册选择、裁剪照片
- iOS 相机拍照、相册获取照片(仿微信) 一一 拍照、图片裁剪
- Android7.0调用系统相机拍照、相册选择图片、裁剪 图片压缩
- Android拍照及相册图片裁剪操作
- 拍照相册和裁剪保存图片集合
- 一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库
- 从相册或拍照获取图片,并实现图片的裁剪
- 拍照选择-相册图片裁剪后保存在指定的地址
- PM2 使用介绍
- vncviewer 连接到服务器授权失败的解决方法/一些常用命令
- 深入体验bash on windows!在windows上搭建原生的linux开发环境环境
- 安卓中利用xutils框架下载新版本apk
- HashMap源码解析
- 获取图片资源:相册选择、拍照、裁剪
- android反编译学习
- linux 环境变量问题
- log4j和其他日志框架桥接图
- java swap
- 什么是矢径
- Android 标签数字自定义控件
- Codeforces 742B Arpa’s obvious problem and Mehrdad’s terrible solution
- 使用CSocket、CSocketFile及CArchive组合接收不到数据的一种原因