您的位置:首页 > 移动开发 > Android开发

调用Android的相机与图库并进行剪切

2016-06-16 19:38 513 查看
ImageView iv;
private File file;
/**
* 点击按钮选择照片
*/
private void doClick(){
//图库选图的intent
Intent intent1 = new Intent(Intent.ACTION_PICK);
intent1.setDataAndType(Media.EXTERNAL_CONTENT_URI, "image/*");
//相机拍照
Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),System.currentTimeMillis()+".jpg");
Uri imageUri = Uri.fromFile(file);
intent2.putExtra(MediaStore.EXTRA_OUTPUT, imageUri );

Intent intent = Intent.createChooser(intent1, "选取头像");
intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{intent2});

startActivityForResult(intent,101);
}
/***
* 选择头像后返回的结果
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==101 && resultCode==RESULT_OK){
Uri uri = null;
if(data!=null){
//图库选图回来
uri = data.getData();
}else{
//拍照回来的
uri = Uri.fromFile(file);
}

crop(uri);
}
if(requestCode==102 && resultCode==RESULT_OK){
//安卓的截图程序返回的截图结果
Bundle bundle = data.getExtras();

Bitmap bitmap = bundle.getParcelable("data");

if(bitmap!=null){
iv.setImageBitmap(bitmap);
//上传到服务器,拿到服务器保存头像图片的url

File cropfile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),System.currentTimeMillis()+".jpg");
bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(cropfile));
}else{
Toast.makeText(this, "头像截取不成功,请重试", 1).show();
}

}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 把uri指向的图片进行截取操作
* @param uri
*/
private void crop(Uri uri) {
//发送隐式意图,调用android自带的图片截取界面
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", 200);
intent.putExtra("outputY", 200);
intent.putExtra("return-data", true);
startActivityForResult(intent, 102);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: