web-dev-qa-db-fra.com

Android: Comment définir une image sur une image vue à partir d'une URL par programme

J'ai une URL d'image provenant de mon API repos. Maintenant, je veux le définir sur une image lorsque l'activité est en cours de chargement. Ci-dessous, voici comment je récupère le haricot de l’API de repos, puis l’URL.

Message message=new Message();
String imageUrl=message.getImageUrl();

Je reçois l'objet Message de ma base de données et l'URL de l'image est incluse dans cet objet Message.

Ensuite, j'ai utilisé l'objet URL pour obtenir cette image URL.

URL url = null;
try {
     url = new URL(imageUrl);
     Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
     contentImageView.setImageBitmap(bmp);
} catch (Exception e) {
     e.printStackTrace();
}

J'ai utilisé les codes ci-dessus pour charger l'image dans un objet imageview qui est contentImageView.

Mais je ne peux toujours pas charger cette image dans imageview, rien ne se charge.

avoir des idées?

5
Barrier

Le moyen le plus simple de le faire est d'utiliser quelque chose comme Picasso ou Glide:

Picasso.with(getContext()).load(imgUrl).fit().into(contentImageView);

vous pouvez ajouter une bibliothèque picasso dans votre titre: compile 'com.squareup.picasso:picasso:2.5.2'

10
Mohammad Zarei

Veuillez essayer cette fonction pour obtenir bitmap

public Bitmap getBitmapfromUrl(String imageUrl)
{
    try
    {
        URL url = new URL(imageUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap bitmap = BitmapFactory.decodeStream(input);
        return bitmap;

    } catch (Exception e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;

    }
}
3
Ratilal Chopda

Utilisez Glide ou la bibliothèque Picasa pour des performances efficaces

Les dépendances

compile 'com.github.bumptech.glide:glide:3.7.0'

Exemple de code

  Glide.with(this)
                .load(url)
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .skipMemoryCache(true)
                .into(imageview);

Références: Glide official docs https://github.com/bumptech/glide

2
Keerthivasan

Si vous voulez le faire sans aucune bibliothèque:

  1. Si vous avez une image bitmap en mémoire

    setImageBitmap (Bitmap bm) // Définit une bitmap comme contenu de cette image.

  2. Si vous avez une image dans un dossier pouvant être dessiné

    setImageResource (int resId) // Définit un dessin comme contenu de cette ImageView.

Référence: https://developer.Android.com/reference/Android/widget/ImageView.html

1
Yogesh