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 :

Affichage d'une image depuis URL


Sujet :

Android

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut Affichage d'une image depuis URL
    Bonjour,

    Enfaite ma question est toute simple ^^ Comment je fais pour afficher une image et la redimensioner avec java en android à partir de son URL que j'ai dans une variable String.

    Merci beaucoup !

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut
    J'ai réussi à afficher l'image, il me manque donc plus que le redimensionnement que je ne sais pas faire :s

    Voici mon code d'affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
    			  photo = (ImageView)findViewById(R.id.photoActivite);
    			  bitmap = BitmapFactory.decodeStream((InputStream)new URL(urlPhoto).getContent());
    			  photo.setImageBitmap(bitmap); 
    		} catch (MalformedURLException e) {
    			  e.printStackTrace();
    		} catch (IOException e) {
    			  e.printStackTrace();
    		}

  3. #3
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Merci de faire une recherche sur le forum

    http://www.developpez.net/forums/d11...-taille-image/

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut
    Ah effectivement je n'avais pas vu ce post. J'm'en suis donc inspiré pour redimensionner mon image par rapport à la taille de l'écran.

    Voici ce que j'ai:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    private Bitmap resize(Bitmap bm)
    	{
     
    		//Dimensions de l'image
    		float width = bm.getWidth();
    		float height = bm.getHeight();
     
    		//Dimensions de l'écran
    		float screenWidth = getWindowManager().getDefaultDisplay().getWidth();
     
    		float rapport= height/width;
    		Log.d("Patate0", "width: "+width+" height: "+height+" rapport: "+rapport);
     
    		float newWidth = (float) ((9.0/10.0)*screenWidth);
    		float newHeight = rapport*newWidth;
    		float scaleWidth = newWidth;
    		float scaleHeight = newHeight;
     
    		//Eviter la pixelisation, on n'augmente pas la taille
    		if(newWidth>width){
    			newWidth=width;
    			newHeight=height;
    		}
     
    		Log.d("Patate", "width: "+width+" height: "+height+ " newWidth: "+newWidth+" newHeight: "+newHeight+" rapport: "+rapport);
     
    		Matrix matrix = new Matrix();
    		matrix.postScale(scaleWidth, scaleHeight);
     
    		Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, (int)width, (int)height, matrix, true);
     
    		return resizedBitmap;
     
    	}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		//Affichage de la photo
    		try {
    			  photo = (ImageView)findViewById(R.id.photoActivite);
    			  bitmap = BitmapFactory.decodeStream((InputStream)new URL(urlPhoto).getContent());
     
    			  bitmap=resize(bitmap);
     
    			  photo.setImageBitmap(bitmap); 
    		} catch (MalformedURLException e) {
    			  e.printStackTrace();
    		} catch (IOException e) {
    			  e.printStackTrace();
    		}
    Au niveau de mon logger j'ai ça:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    01-10 10:15:26.485: D/Patate0(893): width: 448.0 height: 336.0 rapport: 0.75
    01-10 10:15:26.496: D/Patate(893): width: 448.0 height: 336.0 newWidth: 432.0 newHeight: 324.0 rapport: 0.75
    01-10 10:15:26.496: D/AndroidRuntime(893): Shutting down VM
    01-10 10:15:26.505: W/dalvikvm(893): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    01-10 10:15:26.505: E/AndroidRuntime(893): Uncaught handler: thread main exiting due to uncaught exception
    01-10 10:15:26.515: E/AndroidRuntime(893): java.lang.RuntimeException: Unable to start activity ComponentInfo{mpam.base/mpam.base.DetailActActivity}: java.lang.IllegalArgumentException: bitmap size exceeds 32bits
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.os.Looper.loop(Looper.java:123)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at java.lang.reflect.Method.invoke(Method.java:521)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at dalvik.system.NativeStart.main(Native Method)
    01-10 10:15:26.515: E/AndroidRuntime(893): Caused by: java.lang.IllegalArgumentException: bitmap size exceeds 32bits
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.graphics.Bitmap.nativeCreate(Native Method)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.graphics.Bitmap.createBitmap(Bitmap.java:435)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at mpam.base.DetailActActivity.resize(DetailActActivity.java:75)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at mpam.base.DetailActActivity.onCreate(DetailActActivity.java:119)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    01-10 10:15:26.515: E/AndroidRuntime(893): 	... 11 more
    01-10 10:15:26.548: I/dalvikvm(893): threadid=7: reacting to signal 3
    01-10 10:15:26.556: I/dalvikvm(893): Wrote stack trace to '/data/anr/traces.txt'
    01-10 10:15:29.066: I/Process(893): Sending signal. PID: 893 SIG: 9
    01-10 10:15:29.806: D/dalvikvm(901): GC freed 671 objects / 53184 bytes in 112ms
    01-10 10:15:30.216: I/System.out(901): Samedi, 14 Janvier 2012
    01-10 10:15:30.216: D/GererActiviteParcoursCtrl(901): Entrée dans la méthode get
    01-10 10:15:40.878: D/GererActiviteParcoursCtrl(901): Sortie de la méthode get
    01-10 10:15:40.946: D/AndroidRuntime(901): Shutting down VM
    01-10 10:15:40.946: W/dalvikvm(901): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    01-10 10:15:40.946: E/AndroidRuntime(901): Uncaught handler: thread main exiting due to uncaught exception
    01-10 10:15:40.968: E/AndroidRuntime(901): java.lang.RuntimeException: Unable to start activity ComponentInfo{mpam.base/mpam.base.ActiviteJourneeActivity}: java.lang.IllegalArgumentException: Wrong state class -- expecting View State
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.os.Looper.loop(Looper.java:123)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at java.lang.reflect.Method.invoke(Method.java:521)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at dalvik.system.NativeStart.main(Native Method)
    01-10 10:15:40.968: E/AndroidRuntime(901): Caused by: java.lang.IllegalArgumentException: Wrong state class -- expecting View State
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.View.onRestoreInstanceState(View.java:5964)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.widget.TextView.onRestoreInstanceState(TextView.java:2418)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.View.dispatchRestoreInstanceState(View.java:5940)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.view.View.restoreHierarchyState(View.java:5919)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1454)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.Activity.onRestoreInstanceState(Activity.java:835)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.Activity.performRestoreInstanceState(Activity.java:807)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2473)
    01-10 10:15:40.968: E/AndroidRuntime(901): 	... 11 more
    01-10 10:15:40.996: I/dalvikvm(901): threadid=7: reacting to signal 3
    01-10 10:15:41.026: I/dalvikvm(901): Wrote stack trace to '/data/anr/traces.txt'
    01-10 10:20:41.016: I/Process(901): Sending signal. PID: 901 SIG: 9
    01-10 10:20:41.876: D/dalvikvm(907): GC freed 698 objects / 54184 bytes in 105ms
    Donc la taille du bitmap qui est supérieur à 32bits. Je sais pas pourquoi sachant que la nouvelle taille de l'image est inférieure à l'ancienne...

    Merci beaucoup, toute aide est la bienvenue ^^

  5. #5
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    float newWidth = (float) ((9.0/10.0)*screenWidth);
    		float newHeight = rapport*newWidth;
    		float scaleWidth = newWidth;
    		float scaleHeight = newHeight;
     
    		//Eviter la pixelisation, on n'augmente pas la taille
    		if(newWidth>width){
    			newWidth=width;
    			newHeight=height;
    		}
     
    Matrix matrix = new Matrix();
    		matrix.postScale(scaleWidth, scaleHeight);
    La fonction postScale veut un coefficient et non la nouvelle valeur, c'est pour cela que tu as un dépassement.

    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float scaleWidth = newWidth / oldwidth;
    float scaleHeight = newHeight / oldheight;

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut
    Ohlalalala. Merci beaucoup !!!!!!!!!!

Discussions similaires

  1. Affichage d'une image depuis une base de données
    Par Val_André dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/07/2015, 11h56
  2. Interdire l'affichage d'une image par URL
    Par nicolas2603 dans le forum Apache
    Réponses: 2
    Dernier message: 19/04/2011, 13h37
  3. [GD] pb affichage d'une image créée par GD depuis ma base MySQL
    Par freddy92110 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/12/2005, 15h50

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