Crop (redimensionnement) image Android
Bonjour,
Dans mon application, l'utilisateur prend une photo et il a la possibilité de la redimensionner ! J'ai trouvé sur le net la possibilité de cropper une image en la sélectionnant dans la galerie
Code:
1 2 3 4 5 6 7
|
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("crop", "true");
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());
photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(photoPickerIntent, 0); |
Mais je ne veux pas que l'utilisateur puisse choisir la photo, mais que sa soit directement la photo prise ultérieurement.
J'ai trouvé ce bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
File mFile=new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/DCIM/Camera/1337169897869.jpg");
Intent intent = new Intent( "com.android.camera.action.CROP" );
intent.setType( "image/*" );
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
intent.setData(Uri.fromFile(mFile));
intent.putExtra("outputX", 100);
intent.putExtra("outputY", 80);
intent.putExtra("aspectX", 100);
intent.putExtra("aspectY", 80);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.parse(mFile.toString()));
startActivityForResult(intent, 0); |
Seulement il me met une erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
05-21 10:23:41.164: E/AndroidRuntime(3908): FATAL EXCEPTION: main
05-21 10:23:41.164: E/AndroidRuntime(3908): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.android/com.test.android.CropimgActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.camera/com.android.camera.CropImage}; have you declared this activity in your AndroidManifest.xml?
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1817)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1833)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.ActivityThread.access$500(ActivityThread.java:124)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1026)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.os.Looper.loop(Looper.java:132)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.ActivityThread.main(ActivityThread.java:4134)
05-21 10:23:41.164: E/AndroidRuntime(3908): at java.lang.reflect.Method.invokeNative(Native Method)
05-21 10:23:41.164: E/AndroidRuntime(3908): at java.lang.reflect.Method.invoke(Method.java:491)
05-21 10:23:41.164: E/AndroidRuntime(3908): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-21 10:23:41.164: E/AndroidRuntime(3908): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-21 10:23:41.164: E/AndroidRuntime(3908): at dalvik.system.NativeStart.main(Native Method)
05-21 10:23:41.164: E/AndroidRuntime(3908): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.camera/com.android.camera.CropImage}; have you declared this activity in your AndroidManifest.xml?
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1504)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1382)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.Activity.startActivityForResult(Activity.java:3145)
05-21 10:23:41.164: E/AndroidRuntime(3908): at com.test.android.CropimgActivity.onCreate(CropimgActivity.java:48)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.Activity.performCreate(Activity.java:4411)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
05-21 10:23:41.164: E/AndroidRuntime(3908): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1781)
05-21 10:23:41.164: E/AndroidRuntime(3908): ... 11 more |
Je n'ai rien ajouté dans mon Manifest mais il me semble que c'est un appel implicite a une activité d'Android. je ne sais pas pourquoi il ne trouve pas l'activité.J'ai vu que sa pouvait être lié aux versions d'android (2.x), mais je développe en 3.0