笔记35--调用相机和相册

用到的变量:
private static final String IMAGE_NAME = "head.jpg";
private static final String IMAGE_FILE_LOCATION = "file:///sdcard/" + IMAGE_NAME;//temp file
Uri imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The Uri to store the big bitmap
private Bitmap bitmap;
private File file;
private final int TAKE_BIG_PICTURE = 1;//从相册获取
private final int CROP_BIG_PICTURE = 2;//裁剪
private final int CHOOSE_PICTURE = 3;//拍照

1)拍照

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, TAKE_BIG_PICTURE);
2)从相册选

Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, CHOOSE_PICTURE);
3)裁剪

private void cropImageUri(Uri uri, int requestCode){
	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", 320);
	intent.putExtra("outputY", 320);
	intent.putExtra("scale", true);
	intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
	intent.putExtra("return-data", false);
	intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
	intent.putExtra("noFaceDetection", true); // no face detection
	startActivityForResult(intent, requestCode);
}
4)onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	if(resultCode!=RESULT_OK)
		return;
	switch(requestCode){
	case TAKE_BIG_PICTURE:
		cropImageUri(imageUri, CROP_BIG_PICTURE);
		break;
	case CROP_BIG_PICTURE:
		if(imageUri != null){
			bitmap = decodeUriAsBitmap(imageUri);
			head.setBackground(new BitmapDrawable(ImageToCorner.toRoundCorner(bitmap, 800)));

			try {
				String path = "/mnt/sdcard/pic";
				file=new File(path);//将要保存图片的路径 
				if(!file.exists()){
					file.mkdir();
				}
				file = new File(path + IMAGE_NAME);
				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));    
				bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); 
				bos.flush();
				bos.close();
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
	break;
	case CHOOSE_PICTURE:
		if(data != null){
			imageUri = data.getData();
			cropImageUri(imageUri, CROP_BIG_PICTURE);
		}
	break;
<span style="white-space:pre">	</span>}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值