80,349
社区成员
发帖
与我相关
我的任务
分享
/**
* 调用系统裁剪功能
*/
public void startPhotoZoom(Bitmap bitmap, int requestCode) {
String str = MediaStore.Images.Media.insertImage(getContentResolver(),
bitmap, null, null);
Intent intent = new Intent("com.android.camera.action.CROP");
if (TextUtils.isEmpty(str)) {// 大神酷派
File file = getBitMapFile(bitmap);
str = file.getPath();
intent.setDataAndType(Uri.fromFile(file), "image/*");
} else {
Uri uri = Uri.parse(str);
intent.setDataAndType(uri, "image/*");
}
// crop为true是设置在开启的intent中设置显示的view可以剪裁
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX,outputY 是剪裁图片的宽高
intent.putExtra("outputX", 120);
intent.putExtra("outputY", 120);
intent.putExtra("return-data", true);
intent.putExtra("noFaceDetection", true);
startActivityForResult(intent, requestCode);
}
/**
* BitMap转File
*/
private File getBitMapFile(Bitmap bitmap) {
File file;
try {
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);
file = new File(img_path);
} catch (Exception e) {
// http://blog.csdn.net/zhoudailiang/article/details/48055869
Log.d("大神F2", "MediaStore.Images.Media.insertImage null");
File openFile = new File(Environment.getExternalStorageDirectory()
+ "/DCIM/Camera/");
openFile.mkdirs();// 尝试创建系统默相册文件夹
String image_Path = Environment.getExternalStorageDirectory()
+ "/DCIM/Camera/" + getCurrentTime() + ".jpg";// 将要保存图片的路径
file = new File(image_Path);
try {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(file));
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
bos.flush();
bos.close();
} catch (Exception e1) {
Log.d("大神F2", e1.toString());
}
}
return file;
}
/**
* 得到当前系统的时间
**/
private String getCurrentTime() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
String str = format.format(new Date());
return str;
}
/**
* 返回裁剪处理
**/
public Bitmap resultPhotoZoom(Intent data, int resultCode, Bitmap bitmap) {
switch (resultCode) {
case Activity.RESULT_OK: {
// 此处的用于判断接收的Activity是不是你想要的那个
try {
Bundle bundle = data.getExtras();
if (bitmap != null) {
if (!bitmap.isRecycled()) {
bitmap.recycle();
}
bitmap = null;
}
bitmap = bundle.getParcelable("data");
return bitmap;
} catch (Exception e) {
Log.d("异常", e.toString());
}
}
break;
case Activity.RESULT_CANCELED:// 取消
break;
}
return bitmap;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("获取位图", requestCode + "***********");
switch (requestCode) {
case 3:
// 返回裁剪处理
Bitmap bitmap = resultPhotoZoom(data, resultCode, bitmap);
if (bitmap != null && resultCode == Activity.RESULT_OK) {
// 自己的处理逻辑写在这里
imgView.setImageBitmap(bitmap);
}
break;
default:
break;
}
}