一、调用图片剪切的代码
/**
* 用于截取大图
*
*
@param
ctx
*
@param
uri
*
@param
outputX
*
@param
outputY
*
@param
requestCode
*/
public
static
void cropImageUri(Activity ctx, Uri uri,
int outputX,
int outputY,
int requestCode,
boolean scale) {
Intent intent =
new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");
//
发送裁剪信号
intent.putExtra("outputX", outputX);
//
裁剪区的宽
intent.putExtra("outputY", outputY);
//
裁剪区的高
intent.putExtra("aspectX", 1);
//
X方向上的比例
intent.putExtra("aspectY", 1);
//
Y方向上的比例
intent.putExtra("scale", scale);
//
是否保留比例
//
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
//
直接输出文件
intent.putExtra("return-data",
true);
//
是否返回数据
//
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection",
true);
//
关闭人脸检测
ctx.startActivityForResult(intent, requestCode);
}
二、问题
参照魅族官方论坛帖子:com.android.camera.action.CROP照片剪辑的问题
具体表现为剪切完成后在onActivityResult 中取不到data数据。其他机器目前没有发现这样的问题
三、解决办法
mPhoto = extras.getParcelable("data");
if (mPhoto ==
null) {
String filePath = extras.getString("filePath");
if (!StringUtils.isEmpty(filePath))
mPhoto = ImageUtils.decodeSampledBitmapFromFile(filePath, 400, 600);
}
代码说明:
虽然魅族的机器没有返回data字段,但是返回了filePath,是相册选中地址的路径,可以把这个图片按尺寸获取一下。注意可能丢失剪切效果,目前暂时这样处理的。
本文转自博客园农民伯伯的博客,原文链接:【Andorid X 项目笔记】魅族照片剪切问题(4),如需转载请自行联系原博主。