private String path=Environment.getExternalStorageDirectory()+"/header_image.png";
Intent intent_takePhoto=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (hasSdcard()){//判断SD卡是否可用
//存放到内存中
intent_takePhoto.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
}
startActivityForResult(intent_takePhoto, PHOTO_FLAG);
//打开相册
private void getCamera(){
Intent intent_choosePhoto=new Intent(Intent.ACTION_PICK);
intent_choosePhoto.setType("image/*");
startActivityForResult(intent_choosePhoto,CAMERA_FLAG);
}
//裁剪图片
private void crop(Uri uri){
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",250);
intent.putExtra("outputY",250);
//将图片返回给data
intent.putExtra("return-data",true);
startActivityForResult(intent,CAIJIAN_FLAG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode==PHOTO_FLAG&&resultCode==RESULT_OK){//相机返回的数据
if (hasSdcard()){
crop(Uri.fromFile(new File(path)));
}else{
Toast.makeText(EvaluatActivity.this, "未找到存储啦,无法存储照片", Toast.LENGTH_SHORT).show();
}
}else if (requestCode==CAMERA_FLAG&&resultCode==RESULT_OK){//相册返回的数据
//得到图片的全路径
if (data!=null){
Uri uri = data.getData();
crop(uri);
}
}else if(requestCode==CAIJIAN_FLAG&&resultCode==RESULT_OK){//剪切回来的照片数据
if (data!=null){
Bitmap bitmap = data.getParcelableExtra("data");
List<Object> list=new ArrayList<>();
list.add(bitmap);
imageAdapter.setList(list);
String img_path = bitmapToString(bitmap);
first_file = new File(img_path);
file_list.add(first_file);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
//bitMap转换为file(转file不一定对)
public String bitmapToString(Bitmap bitmap){
//将bitmap转换为uri
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null));
String[] proj = { MediaStore.Images.Media.DATA };
Cursor actualimagecursor = managedQuery(uri,proj,null,null,null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String img_path = actualimagecursor.getString(actual_image_column_index);
return img_path;
}
//判断SD卡是否挂载
public boolean hasSdcard(){
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
return true;
}else{
return false;
}
照相与相册裁剪 bitmap转file
最新推荐文章于 2022-01-26 10:15:17 发布