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

Composants graphiques Android Discussion :

ImageView taille image


Sujet :

Composants graphiques Android

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut ImageView taille image
    Hello,
    Je veux afficher une image. Je veux définir la taille d'une image en fonction de la taille de l'écran et non pas fonction de sa taille. Comment fait on cela ?

    Merci

  2. #2
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Par défaut
    Bonsoir,

    Tu peux redimensionner une image comme ceci :
    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
     
            private Bitmap resize(Bitmap bm, int w, int h)
    	{
    		int width = bm.getWidth();
    		int height = bm.getHeight();
    		int newWidth = w;
    		int newHeight = h;
    		float scaleWidth = ((float) newWidth) / width;
    		float scaleHeight = ((float) newHeight) / height;
     
    		Matrix matrix = new Matrix();
    		matrix.postScale(scaleWidth, scaleHeight);
    		Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
     
    		return resizedBitmap;
    	}
    Et tu peux récupérer les dimensions de l'écran comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            screenWidth = getWindowManager().getDefaultDisplay().getWidth();
        	screenHeight = getWindowManager().getDefaultDisplay().getHeight();

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par défaut Utilisation et manipulation d'une Bitmap
    Bonjour, une réaction à ton explication Viish:
    * Comment fait-on pour redimensionner une image de façon à ce qu'elle remplisse un cercle, et non pas un rectangle?
    * j'ai essayé le code ci-dessous à partir d'un exemple, que j'effectue dans une méthode d'initialisation appelée dans le constructeur de ma classe (qui hérite de View):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    discIntBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.image);
    discIntMatrix = new Matrix();
    discIntMatrix.setScale(1.0f / discIntBitmap.getWidth(),1.0f / discIntBitmap.getHeight());
    discIntShader = new BitmapShader(discIntBitmap,Shader.TileMode.MIRROR,Shader.TileMode.MIRROR);
    discIntShader.setLocalMatrix(discIntMatrix);
    discIntPaint = new Paint();
    discIntPaint.setFilterBitmap(true);
    discIntPaint.setStyle(Paint.Style.FILL);
    discIntPaint.setShader(discIntShader);
    * Je ne comprends pas ce que fait setScale(...) (Je me doute bien que c'est là qu'on fixe les éléments de la matrice, mais que ce passe t'il?)

    * Et ensuite j'utilise un canvas pour dessiner le tout via la méthode onDraw():
    canvas.drawCircle(center, center, discIntRadius, discIntPaint);

    * Si j'ai bien compris, une NullPointExeption est levée dans l'instanciation du Shader (il ne me reconnait pas ma Bitmap ce cochon?). Aurais-tu (si c'est quelqu'un d'autre, je suis preneur aussi hein!) l'explication miracle?

    * Y-a-t-il un tutoriel quelque-part dans l'immensité du Web sur la manipulation des Bitmap par des Matrices, et sur l'utilisation en général des matrices, en développement Android?

    Merci d'avance pour quelque attention apportée à mon message!

  4. #4
    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,

    Comment fait-on pour redimensionner une image de façon à ce qu'elle remplisse un cercle, et non pas un rectangle?
    Euh comme cela je dirais qu'il te suffit de récupérer le rayon de ton cercle pour connaître la largeur de ton rectangle minimum , non ?

    A moins que tu veuille transformer ton image en un cercle.

    Je ne comprends pas ce que fait setScale(...) (Je me doute bien que c'est là qu'on fixe les éléments de la matrice, mais que ce passe t'il?)
    Le SetScale te permet de définir la nouvelle échelle de ton image à redimensionner en x et y.

    public void setScale (float sx, float sy)

    Since: API Level 1
    Set the matrix to scale by sx and sy.

    * Si j'ai bien compris, une NullPointExeption est levée dans l'instanciation du Shader (il ne me reconnait pas ma Bitmap ce cochon?). Aurais-tu (si c'est quelqu'un d'autre, je suis preneur aussi hein!) l'explication miracle?
    Pourrais tu nous poster ton logcat ?
    Car si je comprends bien ton message c'est discIntShader qui est null , c'est cela ?

  5. #5
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Par défaut
    Moi je ne comprend pas ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    discIntMatrix.setScale(1.0f / discIntBitmap.getWidth(),1.0f / discIntBitmap.getHeight());
    Si tu regardes mon exemple tu verras que les paramètres que je lui donne sont le ratio entre la taille de ma nouvelle image et la taille de mon ancienne image, alors que toi tu lui donnes la valeur 1 divisé par la taille de ton ancienne image.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par défaut
    Bonjour, et merci pour vos réactions:
    * Donc il suffit bien d'utiliser canvas.drawCircle(..) avec en paramètre le rectangle minimum ou les centre et rayon? L'image sera directement redimensionnée, sera-t-elle coupée ou déformée? (vu qu'on passe d'une image rectangulaire à une image circulaire)
    * setScale: Je suis bien allé voir developer.android, et j'ai bien compris grâce à ton exemple pour un redimensionnement linéaire (élément de la matrice = nouvelle taille / ancienne taille), mais pour passer du rectangle au cercle??
    * J'ai le même problème pour une autre utilisation d'une Bitmap, ci-dessous le code puis le bitmap:

    * code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Bitmap originalImage = BitmapFactory.decodeResource(getResources(),R.drawable.image);
     
    int width = originalImage.getWidth();
    * logcat:

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    07-25 17:12:30.630: DEBUG/AndroidRuntime(326): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    07-25 17:12:30.630: DEBUG/AndroidRuntime(326): CheckJNI is ON
    07-25 17:12:30.801: DEBUG/AndroidRuntime(326): --- registering native functions ---
    07-25 17:12:31.130: DEBUG/ddm-heap(326): Got feature list request
    07-25 17:12:31.440: DEBUG/PackageParser(65): Scanning package: /data/app/vmdl70682.tmp
    07-25 17:12:31.580: DEBUG/dalvikvm(65): GC freed 22728 objects / 1123800 bytes in 104ms
    07-25 17:12:31.670: INFO/PackageManager(65): Removing non-system package:obd.ProgAndroid.Test
    07-25 17:12:31.670: DEBUG/PackageManager(65): Removing package obd.ProgAndroid.Test
    07-25 17:12:31.670: DEBUG/PackageManager(65):   Activities: obd.ProgAndroid.Test.TestActivity
    07-25 17:12:31.760: DEBUG/PackageManager(65): Scanning package obd.ProgAndroid.Test
    07-25 17:12:31.760: INFO/PackageManager(65): /data/app/vmdl70682.tmp changed; unpacking
    07-25 17:12:31.770: DEBUG/installd(31): DexInv: --- BEGIN '/data/app/vmdl70682.tmp' ---
    07-25 17:12:31.930: DEBUG/dalvikvm(332): DexOpt: load 29ms, verify 39ms, opt 2ms
    07-25 17:12:31.940: DEBUG/installd(31): DexInv: --- END '/data/app/vmdl70682.tmp' (success) ---
    07-25 17:12:31.940: DEBUG/PackageManager(65):   Activities: obd.ProgAndroid.Test.TestActivity
    07-25 17:12:31.950: DEBUG/ActivityManager(65): Uninstalling process obd.ProgAndroid.Test
    07-25 17:12:32.040: INFO/installd(31): move /data/dalvik-cache/data@app@vmdl70682.tmp@classes.dex -> /data/dalvik-cache/data@app@obd.ProgAndroid.Test.apk@classes.dex
    07-25 17:12:32.050: DEBUG/PackageManager(65): New package installed in /data/app/obd.ProgAndroid.Test.apk
    07-25 17:12:32.250: DEBUG/AndroidRuntime(326): Shutting down VM
    07-25 17:12:32.250: DEBUG/dalvikvm(326): DestroyJavaVM waiting for non-daemon threads to exit
    07-25 17:12:32.260: DEBUG/dalvikvm(326): DestroyJavaVM shutting VM down
    07-25 17:12:32.260: DEBUG/dalvikvm(326): HeapWorker thread shutting down
    07-25 17:12:32.260: DEBUG/dalvikvm(326): HeapWorker thread has shut down
    07-25 17:12:32.260: DEBUG/jdwp(326): JDWP shutting down net...
    07-25 17:12:32.260: INFO/dalvikvm(326): Debugger has detached; object registry had 1 entries
    07-25 17:12:32.260: DEBUG/dalvikvm(326): VM cleaning up
    07-25 17:12:32.270: DEBUG/dalvikvm(326): LinearAlloc 0x0 used 623916 of 5242880 (11%)
    07-25 17:12:32.300: ERROR/AndroidRuntime(326): ERROR: thread attach failed
    07-25 17:12:32.300: DEBUG/ActivityManager(65): Uninstalling process obd.ProgAndroid.Test
    07-25 17:12:32.710: DEBUG/dalvikvm(65): GC freed 4373 objects / 327960 bytes in 285ms
    07-25 17:12:32.720: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f0700e5
    07-25 17:12:32.750: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f020031
    07-25 17:12:32.760: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f020030
    07-25 17:12:32.760: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f050000
    07-25 17:12:32.810: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f060000
    07-25 17:12:32.820: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f060001
    07-25 17:12:32.980: DEBUG/dalvikvm(142): GC freed 146 objects / 5712 bytes in 252ms
    07-25 17:12:33.020: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f0700e5
    07-25 17:12:33.020: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f020031
    07-25 17:12:33.020: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f020030
    07-25 17:12:33.020: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f050000
    07-25 17:12:33.030: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f060000
    07-25 17:12:33.030: WARN/ResourceType(65): Resources don't contain package for resource number 0x7f060001
    07-25 17:12:33.430: DEBUG/AndroidRuntime(337): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    07-25 17:12:33.430: DEBUG/AndroidRuntime(337): CheckJNI is ON
    07-25 17:12:33.680: DEBUG/AndroidRuntime(337): --- registering native functions ---
    07-25 17:12:33.960: DEBUG/ddm-heap(337): Got feature list request
    07-25 17:12:34.280: INFO/ActivityManager(65): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=obd.ProgAndroid.Test/.TestActivity }
    07-25 17:12:34.360: INFO/ActivityManager(65): Start proc obd.ProgAndroid.Test for activity obd.ProgAndroid.Test/.TestActivity: pid=343 uid=10024 gids={}
    07-25 17:12:34.360: DEBUG/AndroidRuntime(337): Shutting down VM
    07-25 17:12:34.370: DEBUG/dalvikvm(337): DestroyJavaVM waiting for non-daemon threads to exit
    07-25 17:12:34.370: DEBUG/dalvikvm(337): DestroyJavaVM shutting VM down
    07-25 17:12:34.370: DEBUG/dalvikvm(337): HeapWorker thread shutting down
    07-25 17:12:34.380: DEBUG/dalvikvm(337): HeapWorker thread has shut down
    07-25 17:12:34.380: DEBUG/jdwp(337): JDWP shutting down net...
    07-25 17:12:34.380: INFO/dalvikvm(337): Debugger has detached; object registry had 1 entries
    07-25 17:12:34.392: DEBUG/dalvikvm(337): VM cleaning up
    07-25 17:12:34.420: ERROR/AndroidRuntime(337): ERROR: thread attach failed
    07-25 17:12:34.431: DEBUG/dalvikvm(337): LinearAlloc 0x0 used 639500 of 5242880 (12%)
    07-25 17:12:34.560: DEBUG/ddm-heap(343): Got feature list request
    07-25 17:12:35.000: WARN/ResourceType(343): getEntry failing because entryIndex 1 is beyond type entryCount 1
    07-25 17:12:35.000: WARN/ResourceType(343): Failure getting entry for 0x7f020001 (t=1 e=1) in package 0: 0x80000001
    07-25 17:12:35.000: DEBUG/AndroidRuntime(343): Shutting down VM
    07-25 17:12:35.000: WARN/dalvikvm(343): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    07-25 17:12:35.000: ERROR/AndroidRuntime(343): Uncaught handler: thread main exiting due to uncaught exception
    07-25 17:12:35.040: ERROR/AndroidRuntime(343): java.lang.RuntimeException: Unable to start activity ComponentInfo{obd.ProgAndroid.Test/obd.ProgAndroid.Test.TestActivity}: java.lang.NullPointerException
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.os.Handler.dispatchMessage(Handler.java:99)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.os.Looper.loop(Looper.java:123)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at java.lang.reflect.Method.invokeNative(Native Method)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at java.lang.reflect.Method.invoke(Method.java:521)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at dalvik.system.NativeStart.main(Native Method)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343): Caused by: java.lang.NullPointerException
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at obd.ProgAndroid.Test.TestActivity.onCreate(TestActivity.java:34)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    07-25 17:12:35.040: ERROR/AndroidRuntime(343):     ... 11 more
    07-25 17:12:35.050: INFO/Process(65): Sending signal. PID: 343 SIG: 3
    07-25 17:12:35.060: INFO/dalvikvm(343): threadid=7: reacting to signal 3
    07-25 17:12:35.060: ERROR/dalvikvm(343): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
    07-25 17:12:44.394: WARN/ActivityManager(65): Launch timeout has expired, giving up wake lock!
    07-25 17:12:44.724: WARN/ActivityManager(65): Activity idle timeout for HistoryRecord{44c1eb70 obd.ProgAndroid.Test/.TestActivity}
    07-25 17:12:49.910: DEBUG/dalvikvm(142): GC freed 2134 objects / 123880 bytes in 154ms

Discussions similaires

  1. taille image <img>
    Par Mike35 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/03/2006, 11h20
  2. [ImageMagick] Contenu d'un répertoire et taille images
    Par FoxLeRenard dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 07/02/2006, 17h40
  3. taille page = taille image
    Par sohnic dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/12/2005, 13h47
  4. Taille image d'accueil
    Par JeanMi66 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 19/09/2005, 11h27
  5. [Image]Vérifier taille image lors d'upload FTP
    Par MiJack dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 10/09/2004, 01h10

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