调用系统相机、图库并选择图片
2016-07-29 09:58
260 查看
相信很多学习android的朋友,都和我一样连一个简单的获取手机图片的无从知晓,于是借助于百度寻求帮助,于是乎有感写,这篇博客不仅仅是巩固自身的基础知识,希望能帮助到其他人。 Uri mPhotoUri; private static final int REQUESTCODE_PICK = 0; // 相册选图标记 private static final int REQUESTCODE_TAKE = 1; // 相机拍照标记 //如果不太明白Uri //请查看链接:http://blog.csdn.net/sunny09290/article/details/7514963 1.调用系统相机 Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPURE)
//获取保存路径
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mPhotoUri);//可以忽略
startActivityForResult(intent,REQUESTCODE_TAKE);//跳转相机
//从图片库获取图片 Intent intent; if (Build.VERSION.SDK_INT < 19) { intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); } else { intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); } startActivityForResult(intent, REQUESTCODE_PICK);
//重写回调方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {//是否选中图片
switch (requestCode) {
case REQUESTCODE_PICK:// 直接从相册获取
Uri selectedImage = data.getData(); String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close();
// Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
Bitmap bitmap = FileUtil.getSmallBitmap(picturePath);//压缩图片
setPotoFeedImageItem(bitmap);
break;
case REQUESTCODE_TAKE:// 调用相机拍照
if (resultCode == Activity.RESULT_OK) { final Uri uri = mPhotoUri; Log.e("resultCode", uri + ""); if (uri != null) { processPicture(uri); } } break; } } super.onActivityResult(requestCode, resultCode, data); } /** * 图片显示 * * @param uri */ private void processPicture(Uri uri) { final String[] projection = {MediaStore.Images.Media.DATA}; final Cursor cursor = managedQuery(uri, projection, null, null, null); cursor.moveToFirst(); final int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); String imagePath = cursor.getString(columnIndex); Debug.e("processPicture", imagePath); Bitmap bitmap = FileUtil.getSmallBitmap(imagePath);//压缩图片 setPotoFeedImageItem(bitmap); }
//将图片显示在控件上
privet void setPotoFeedImageItem(Bitmap bitmap){
ImageView acatarimg = (ImageView) findViewById(R.id.img);
acatarimg.setImageBitmap(bitmap);
}
下面的是一个压缩图片的工具类
public class FileUtil {
/** * 裁剪图片方法实现 * * @param uri */ public static void startPhotoZoom(Activity cot, Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 300); intent.putExtra("outputY", 300); intent.putExtra("return-data", true); cot.startActivityForResult(intent, REQUESTCODE_CUTTING); } //计算图片的缩放值 public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height/ (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } // 根据路径获得图片并压缩,返回bitmap用于显示 public static Bitmap getSmallBitmap(String filePath) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, 480, 800); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options); }
}
相关文章推荐
- Android调用相机拍照并返回路径和调用系统图库选择图片
- Android调用相机拍照并返回路径和调用系统图库选择图片
- 安卓中选择系统图库的图片及调用相机的源码(原创)
- Android 调用系统相机拍照(适配7.0)、从图库选择图片、从数据库读取联系人信息、相册图片、扫描文件
- Android调用相机拍照并返回路径和调用系统图库选择图片
- Android调用系统相册和相机选择图片显示在界面
- 调用系统的相机 保存图片指定路径,供图库查看
- iOS调用系统相册和相机选择图片
- Android调用系统相机拍照,从图库中选择照片,调用系统摄像机录像
- 调用系统相机,截图工具与图库(调用系统的图片内容提供者)
- android调用系统相机,系统图库,系统剪裁图片
- ios 调用系统相机,图库,相册。将照片保存在相册,保存图片在本地,UIImagePickerController
- Android:调用系统相机 图库 裁剪-图片上传-客服端-服务器
- iOS 调用相机拍照和选择图库图片 设置头像
- 调用Android中相机或图库选择图片并剪切
- android 调用系统相机选择图片
- (复习)android 调用系统相机 图库 裁剪-图片上传-客服端-服务器
- android开发中调用系统的相机和图库及图片的后期处理
- 调用相机拍照或者从图库里选择图片裁剪后设置到界面
- [Android Pro] 调用系统相机和图库,裁剪图片