Aller au contenu

Agrandir une image en gardant le ratio


j3n

Recommended Posts

Bonjour,

Je souhaiterais avoir une image qui prenne toute la largeur de la page tout en gardant les proportions.

Pour info, cette image est plus petite que l'écran et provient d'internet donc je ne connais pas les dimensions.

Merci de votre aide.

J3n

Lien vers le commentaire
Partager sur d’autres sites

Je souhaiterais avoir une image qui prenne toute la largeur de la page tout en gardant les proportions.

Si ton ImageView possède les attributs suivants : layout_width="fill_parent" et layout_height="wrap_content" ça devrait le faire tout seul (bien sur il faut que le conteneur parent prenne tout la largeur de l'écran)

Pour info, cette image est plus petite que l'écran et provient d'internet donc je ne connais pas les dimensions.

si tu récupère ton image d'internet tu dois avoir un bout de code qui ressemble à cela :

InputStream is = (InputStream) this.fetch(url);		
Bitmap bmp = BitmapFactory.decodeStream(is);

si c'est le cas tu peux donc récupérer les dimensions ainsi :

bmp.getHeight();
bmp.getWidth();

Si je suis à coté de la plaque, donnes un peu plus d'info :P

Lien vers le commentaire
Partager sur d’autres sites

Si je suis à coté de la plaque, donnes un peu plus d'info :P

Pour récupérer l'image d'internet, j'utilise une classe qui s'appelle DistantImageView

public class DistantImageView extends ImageView implements ImageCallback

avec une méthode setUrl.

Pour info, l'image que j'envoie fait 480 de largeur donc normalement c'est la bonne taille. Mais ça me la réduit de la même taille que si je la regarde depuis le navigateur android.

J'ai essayé tous les scaleType, rien à faire.

Lien vers le commentaire
Partager sur d’autres sites

Perso j'aime pas trop faire ca mais tu peux tenter :

imageView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT ));

imageView.setAdjustViewBounds(false); // ou true à essayer

imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

Lien vers le commentaire
Partager sur d’autres sites

Rien ne change :(

Tu devrais essayer de récupérer une des images et la mettre dans les ressources de l'application et voir si tu as le même problème.

Parce que ca peut dépendre de bcp de chose ... par exemple si tu affiche dans une webview ...

Lien vers le commentaire
Partager sur d’autres sites

CQFD ^^

Ton problème viens de ta manière de récupérer et d'afficher depuis le web.

Je n'ai pas la solution mais ca cible mieux le problème.

Si tu ne trouve pas seul du coup il va falloir fournir plus de code (récupération, xml d'affichage, etc...)

Lien vers le commentaire
Partager sur d’autres sites

Oui j'avais un peu vu d'où venait le souci.

J'ai essayé une méthode plus simple qui fait le même problème

private Drawable LoadImageFromWebOperations(String url) {
    try
    {
	    InputStream is = (InputStream) new URL(url).getContent();
	    Drawable d = Drawable.createFromStream(is, "src name");
	    return d;
    } catch (Exception e) {
    	return null;
    }
}

ImageView header_image = (ImageView)this.findViewById(R.id.header);
Drawable d = LoadImageFromWebOperations("MON URL");
header_image.setImageDrawable(d);

Lien vers le commentaire
Partager sur d’autres sites

Peut être utiliser un autre moyen de récupérer :

ImageView i = new ImageView(this.myContext);

           try {
                               /* Open a new URL and get the InputStream to load data from it. */
                               URL aURL = new URL(myRemoteImages[position]);
                               URLConnection conn = aURL.openConnection();
                               conn.connect();
                               InputStream is = conn.getInputStream();
                               /* Buffered is always good for a performance plus. */
                               BufferedInputStream bis = new BufferedInputStream(is);
                               /* Decode url-data to a bitmap. */
                               Bitmap bm = BitmapFactory.decodeStream(bis);
                               bis.close();
                               is.close();
                               /* Apply the Bitmap to the ImageView that will be returned. */
                               i.setImageBitmap(bm);
                       } catch (IOException e) {
                               i.setImageResource(R.drawable.error);
                               Log.e("DEBUGTAG", "Remtoe Image Exception", e);
                       }

           /* Image should be scaled as width/height are set. */
           i.setScaleType(ImageView.ScaleType.FIT_CENTER);
           /* Set the Width/Height of the ImageView. */
           i.setLayoutParams(new LayoutParams(FILL_PARENT, WRAP_CONTENT));
           return i;
       }

Note : le LayoutParams est celui du conteneur ou tu affiches l'imageview (ex : gallery.LayoutParam)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...