Jump to content

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

Link to comment
Share on other 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

Link to comment
Share on other 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.

Link to comment
Share on other 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);

Link to comment
Share on other 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 ...

Link to comment
Share on other 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...)

Link to comment
Share on other 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);

Link to comment
Share on other 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)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...