2014-09-27 2 views
0

Я начинаю следующие намерения:com.android.camera.action.CROP заклинивания

  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

Android не имеет '' CROP' Intent': http://commonsware.com/blog/2013/01/23 /no-android-does-not-have-crop-intent.html – CommonsWare

+0

Я знаю, но у некоторых смартфонов это – L3n95

+0

Да, но «некоторые» не «все». Если ваша цель - иметь приложение, совместимое на большинстве Android-устройств, не полагайтесь на недокументированное неподдерживаемое действие «Intent». Используйте библиотеку или реализуйте свой собственный интерфейс обрезания изображений. – CommonsWare

ответ

0

Большое изображение для использования Uri, небольшие изображения с использованием растрового изображения. Здесь вам нужно использовать 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) { 
 
\t Intent intent = new Intent("com.android.camera.action.CROP"); 
 
\t intent.setDataAndType(uri, "image/*"); 
 
\t intent.putExtra("crop", "true"); 
 
\t intent.putExtra("aspectX", 1); 
 
\t intent.putExtra("aspectY", 1); 
 
\t intent.putExtra("scale", true); 
 
\t intent.putExtra("outputX", 500); 
 
\t intent.putExtra("outputY", 500); 
 
\t intent.putExtra("noFaceDetection", true); 
 
\t intent.putExtra("return-data", false); 
 
\t intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
 
\t intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
 
\t startActivityForResult(intent, Constant.CROP_IMAGE); 
 
} 
 

 
Bitmap bitmap = decodeUriAsBitmap(imageUri); 
 

 
//decode bitmap 
 
private Bitmap decodeUriAsBitmap(Uri uri){ 
 
\t Bitmap bitmap = null; 
 
\t try { 
 
\t \t bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); 
 
\t } catch (FileNotFoundException e) { 
 
\t \t e.printStackTrace(); 
 
\t \t return null; 
 
\t } 
 
\t return bitmap; 
 
}

Смежные вопросы