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 运用AsyncTask 获取图片并显示
  2. Android:ListView数据异步加载、Handler、AsyncTask
  3. Android ListView组合CheckBox实现多选获取数据
  4. android中网络图片的显示
  5. Android 图片相关
  6. android 图片点击一下就放大到全屏,再点一下就回到原界面
  7. Android图片压缩、加水印
  8. Android获取网页上的图片的代码

随机推荐

  1. Android MediaPlayer Playback流程分析
  2. android textView加载html 解决a标签链接
  3. GPS开发常用方法 和用Criteria确定androi
  4. android Json解析全
  5. android中创建有自身特色的字符串
  6. ButterKnife基本使用
  7. android 调用分享
  8. ssssss
  9. Android Camera怎样打开关闭闪光灯
  10. android listview 与 一般多线程配合产生