我开始遵循意图:
Intent cropIntent = new Intent("com.android.camera.action.CROP");
cropIntent.setDataAndType(data.getData(), "image/*");
cropIntent.putExtra("crop", "true");
cropIntent.putExtra("outputX", wallWidth);
cropIntent.putExtra("outputY", wallHeight);
cropIntent.putExtra("aspectX", wallWidth);
cropIntent.putExtra("aspectY", wallHeight);
cropIntent.putExtra("scale", true);
cropIntent.putExtra("scaleUpIfNeeded", true);
cropIntent.putExtra("return-data", true);
cropIntent.putExtra("noFaceDetection", true);
在我的情况下,wallWidth和wallHeight是960/800然后这个意图停留在裁剪(这个加载圆圈旋转整个时间)。 如果我输入大约400或更少的东西输出它完美的工作。 我怎样才能解决这个问题?因为我想要一个具有更高分辨率的位图作为输出。
答案 0 :(得分:-1)
使用Uri的大图片,使用Bitmap的小图片。这里你需要使用Uri。
关键代码如下:
private static final String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";//temp file
private Uri imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The Uri to store the big bitmap
startPhotoZoom(data.getData());
public void startPhotoZoom(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("scale", true);
intent.putExtra("outputX", 500);
intent.putExtra("outputY", 500);
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, Constant.CROP_IMAGE);
}
Bitmap bitmap = decodeUriAsBitmap(imageUri);
//decode bitmap
private Bitmap decodeUriAsBitmap(Uri uri){
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
return bitmap;
}