public class MainActivity extends Activity { private static final int PHOTO_REQUEST_CAREMA = 1;// 拍照   private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择 private static final int PHOTO_REQUEST_CUT = 3;// 结果private ImageView iv_image; /* 头像名称 */ private static final String PHOTO_FILE_NAME = "temp_photo.jpg"; private File tempFile; @Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);  this.iv_image = (ImageView) this.findViewById(R.id.iv_image); }   /*  * 从相册获取  */public void gallery(View view) {     // 激活系统图库,选择一张图片     Intent intent = new Intent(Intent.ACTION_PICK);     intent.setType("image/*");    // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERY      startActivityForResult(intent, PHOTO_REQUEST_GALLERY); } /* * 从相机获取  */ public void camera(View view) {     // 激活相机     Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");   // 判断存储卡是否可以用,可用进行存储    if (hasSdcard()) {       tempFile = new File(Environment.getExternalStorageDirectory(),                PHOTO_FILE_NAME);       // 从文件中创建uri      Uri uri = Uri.fromFile(tempFile);       intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);    }    // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA    startActivityForResult(intent, PHOTO_REQUEST_CAREMA); } /*  * 剪切图片 */private void crop(Uri uri) {    // 裁剪图片意图    Intent intent = new Intent("com.android.camera.action.CROP");   intent.setDataAndType(uri, "image/*");    intent.putExtra("crop", "true");     // 裁剪框的比例,1:1     intent.putExtra("aspectX", 1);      intent.putExtra("aspectY", 1);     // 裁剪后输出图片的尺寸大小     intent.putExtra("outputX", 250);      intent.putExtra("outputY", 250);   intent.putExtra("outputFormat", "JPEG");// 图片格式     intent.putExtra("noFaceDetection", true);// 取消人脸识别     intent.putExtra("return-data", true);      // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT     startActivityForResult(intent, PHOTO_REQUEST_CUT); } /*  * 判断sdcard是否被挂载  */ private boolean hasSdcard() {     if (Environment.getExternalStorageState().equals(             Environment.MEDIA_MOUNTED)) {        return true;     } else {        return false;     } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {     if (requestCode == PHOTO_REQUEST_GALLERY) {         // 从相册返回的数据         if (data != null) {             // 得到图片的全路径             Uri uri = data.getData();            crop(uri);         }    } else if (requestCode == PHOTO_REQUEST_CAREMA) {         // 从相机返回的数据         if (hasSdcard()) {            crop(Uri.fromFile(tempFile));         } else {             Toast.makeText(MainActivity.this, "未找到存储卡,无法存储照片!", 0).show();         }   } else if (requestCode == PHOTO_REQUEST_CUT) {         // 从剪切图片返回的数据         if (data != null) {            Bitmap bitmap = data.getParcelableExtra("data");           this.iv_image.setImageBitmap(bitmap);       }         try {           // 将临时文件删除            tempFile.delete();        } catch (Exception e) {             e.printStackTrace();         }   }    super.onActivityResult(requestCode, resultCode, data); } }

更多相关文章

  1. android对大图片的缓存处理
  2. android 根据SD卡中图片路径读取并显示SD中的图片――源代码
  3. Android解决HAXM安装的问题
  4. Android(安卓)Error: java.lang.IllegalArgumentException: You
  5. Android判断文件类型(视频、音频、图片等)
  6. 【Android】Wifi管理与应用
  7. android html 读写文件
  8. android post请求接口demo
  9. 图片加载库Glide的使用

随机推荐

  1. 简析Android对Linux内核的改动-(上)
  2. Android将允许纯C/C++开发应用
  3. 最封闭的开源系统:话说 Android(安卓)的八
  4. android本地系统服务详解
  5. Android教程之一:Window下搭建Android开发
  6. Android程序员必看之Android六大优势
  7. android体系化展示
  8. 谈一谈Android中的事件分发
  9. 最封闭的开源系统:话说 Android(安卓)的八
  10. Android(安卓)图片加载Bitmap OOM错误解