IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Crop (redimensionnement) image Android


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Attention, "crop" une image, ce n'est pas la redimensionner, c'est prendre une sous-image de celle-ci.
    "Cropper" une image de 256x256 en une image 10x10 fera que tu auras un carré de 10 pixels par 10 pixels partant de l'origine de la photo (en haut à gauche, souvent) et le reste sera perdu.

    Sinon, je te conseils fortement de lire les erreurs, celle-ci indique comment la résoudre :
    Citation Envoyé par L'erreur
    have you declared this activity in your AndroidManifest.xml?
    Pour résoudre ce problème, il faut donc déclarer cette activité dans ton Manifest.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Par défaut
    Je me suis mal exprimé ! En effet ce que je veux n'est pas une redimension mais plutôt une sélection d'une partie de l'image. J'ai bien vu l'erreur sauf que je ne vois pas comment la déclarer dans mon manifest. Si l'on appelle l'appareil photo par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Il n'y a pas besoin de la déclarer car c'est implicite, je pensais que c’était le même fonctionnement pour le crop.

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ok, donc petite confusion de terme, mais pas de problème de ce côté-ci finalement

    Pour déclarer l'activité, ben, c'est comme pour déclarer l'autre.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ok, donc petite confusion de terme, mais pas de problème de ce côté-ci finalement

    Pour déclarer l'activité, ben, c'est comme pour déclarer l'autre.
    Tu rajoutes la ligne
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <activity android:name="com.test.android.CropimgActivity"/>
    en tant que de la balise "Application".

    Tu rajoutes ainsi les activités dans ton Manifest pour qu'elles puissent être pris en compte.

    Au niveau de ta confusion, il faut séparer :
    • les activités de ton application
    • les activités du téléphone


    Toutes les activités de ton application doivent être déclarées dans le Manifest.
    Les autres, vu que c'est en-dehors de la responsabilité de ton application, tu n'as pas à t'en soucier au niveau du Manifest
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Par défaut
    Bon je suis pas bien réveillé ce matin ! je ne t'ai pas donné la bonne erreur ! Voici l'activity qu'il ne trouve pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    05-21 14:56:17.453: E/AndroidRuntime(14186): FATAL EXCEPTION: main
    05-21 14:56:17.453: E/AndroidRuntime(14186): 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 14:56:17.453: E/AndroidRuntime(14186): 	at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1504)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at android.app.Instrumentation.execStartActivity(Instrumentation.java:1382)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at android.app.Activity.startActivityForResult(Activity.java:3145)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at com.test.android.AppareilPhotoActivity$4.onClick(AppareilPhotoActivity.java:439)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at android.os.Looper.loop(Looper.java:132)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at android.app.ActivityThread.main(ActivityThread.java:4134)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at java.lang.reflect.Method.invoke(Method.java:491)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    05-21 14:56:17.453: E/AndroidRuntime(14186): 	at dalvik.system.NativeStart.main(Native Method)
    Je n'ai pas d'activité CropImage dans mes fichiers eclipse ! Donc je ne vois pas pourquoi ni comment la déclarer =(

  7. #7
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Qu'y-a-t-il à la ligne 439 de ta classe "AppareilPhotoActivity" ? (si ça a changé depuis, mettre le contenu du onClick).

    Est-ce le stacktrace complet, ou simplement un extrait ?

    EDIT : après recherche, tente de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intent.setClassName("com.android.camera", "com.android.camera.CropImage");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intent.setClassName("com.android.gallery", "com.android.camera.CropImage");
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. [FLASH 8] Redimensionner image
    Par arnaud_verlaine dans le forum Flash
    Réponses: 4
    Dernier message: 14/06/2006, 11h43
  2. optimisation redimensionnement image
    Par enguerran dans le forum Graphisme
    Réponses: 12
    Dernier message: 12/05/2006, 03h54
  3. Redimensionner image avant de la charger
    Par nou366 dans le forum Delphi
    Réponses: 2
    Dernier message: 11/05/2006, 13h05
  4. Redimensionner image dans MDI
    Par DEFITOP dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/05/2006, 20h02
  5. [MFC - GDI] Redimensionnement Image
    Par Ben A. dans le forum MFC
    Réponses: 3
    Dernier message: 02/02/2006, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo