Question Comment charger un ImageView par URL dans Android? [fermé]


Comment utilisez-vous une image référencée par URL dans un ImageView?


461
2018-03-18 17:18


origine


Réponses:


De Développeur Android:

// show The Image in a ImageView
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
            .execute("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");

public void onClick(View v) {
    startActivity(new Intent(this, IndexActivity.class));
    finish();

}

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

Assurez-vous de disposer des autorisations suivantes dans votre AndroidManifest.xml Accéder à internet.

<uses-permission android:name="android.permission.INTERNET" />

659
2018-02-15 05:55



Vous devrez d'abord télécharger l'image

public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    InputStream in = null;
    BufferedOutputStream out = null;

    try {
        in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);

        final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
        out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
        copy(in, out);
        out.flush();

        final byte[] data = dataStream.toByteArray();
        BitmapFactory.Options options = new BitmapFactory.Options();
        //options.inSampleSize = 1;

        bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
    } catch (IOException e) {
        Log.e(TAG, "Could not load Bitmap from: " + url);
    } finally {
        closeStream(in);
        closeStream(out);
    }

    return bitmap;
}

Ensuite, utilisez le Imageview.setImageBitmap pour définir bitmap dans le ImageView


146
2018-03-18 17:48



1.  Picasso permet un chargement d'image sans souci dans votre application, souvent dans une seule ligne de code!

Utilisez Gradle:

implementation 'com.squareup.picasso:picasso:2.71828'

Juste une ligne de code!

Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);

2.  Glisser Une bibliothèque de chargement et de mise en cache d'images pour Android axée sur un défilement fluide

Utilisez Gradle:

repositories {
  mavenCentral() 
  google()
}

dependencies {
   implementation 'com.github.bumptech.glide:glide:4.7.1'
   annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

// Pour une vue simple:

  Glide.with(this).load("http://i.imgur.com/DvpvklR.png").into(imageView);

3.  fresque  est un système puissant pour afficher des images dans Android    applications.Fresco prend en charge le chargement et l'affichage des images, de sorte que vous n'avez pas   à.

Premiers pas avec Fresco


124
2018-05-26 08:06



J'ai écrit un cours pour gérer cela, car il semble que ce soit un besoin récurrent dans mes différents projets:

https://github.com/koush/UrlImageViewHelper

UrlImageViewHelper remplira un   ImageView avec une image trouvée   à une URL.

L'échantillon fera une image de Google   Rechercher et charger / afficher les résultats   asynchrone.

UrlImageViewHelper sera automatiquement   télécharger, sauvegarder et mettre en cache tous les   image URL les BitmapDrawables.   Les URL en double ne seront pas chargées dans   mémoire deux fois. La mémoire bitmap est gérée   en utilisant une table de hachage de référence faible,   dès que l'image n'est plus   utilisé par vous, ce sera des ordures   collecté automatiquement.


71
2018-04-12 20:20



Quoi qu’il en soit, les gens me demandent de le poster comme réponse. je poste.

URL newurl = new URL(photo_url_str); 
mIcon_val = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream());
profile_photo.setImageBitmap(mIcon_val);

Merci.


58
2018-04-30 06:26



La réponse acceptée ci-dessus est idéale si vous chargez l'image en cliquant sur un bouton, mais si vous le faites dans une nouvelle activité, l'interface se fige une seconde ou deux. En regardant autour de moi, j'ai trouvé qu'un asynctask simple éliminé ce problème.

Pour utiliser une asynctask, ajoutez cette classe à la fin de votre activité:

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }    
}

Et appelez depuis votre méthode onCreate () en utilisant:

new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
        .execute(MY_URL_STRING);

Le résultat est une activité rapidement chargée et une imageview qui apparaît une fraction de seconde plus tard en fonction de la vitesse du réseau de l'utilisateur.


56
2018-06-03 05:31



Vous pouvez également utiliser cette vue LoadingImageView pour charger une image depuis une URL:

http://blog.blundellapps.com/imageview-with-loading-spinner/

Une fois que vous avez ajouté le fichier de classe à partir de ce lien, vous pouvez instancier une vue d'image URL:

en XML:

<com.blundell.tut.LoaderImageView
  android:id="@+id/loaderImageView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  image="http://developer.android.com/images/dialog_buttons.png"
 />

Dans du code:

final LoaderImageView image = new LoaderImageView(this, "http://developer.android.com/images/dialog_buttons.png");

Et mettez-le à jour en utilisant:

image.setImageDrawable("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");

25
2017-12-05 12:47



public class LoadWebImg extends Activity {

String image_URL=
 "http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png";

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       ImageView bmImage = (ImageView)findViewById(R.id.image);
    BitmapFactory.Options bmOptions;
    bmOptions = new BitmapFactory.Options();
    bmOptions.inSampleSize = 1;
    Bitmap bm = LoadImage(image_URL, bmOptions);
    bmImage.setImageBitmap(bm);
   }

   private Bitmap LoadImage(String URL, BitmapFactory.Options options)
   {       
    Bitmap bitmap = null;
    InputStream in = null;       
       try {
           in = OpenHttpConnection(URL);
           bitmap = BitmapFactory.decodeStream(in, null, options);
           in.close();
       } catch (IOException e1) {
       }
       return bitmap;               
   }

private InputStream OpenHttpConnection(String strURL) throws IOException{
 InputStream inputStream = null;
 URL url = new URL(strURL);
 URLConnection conn = url.openConnection();

 try{
  HttpURLConnection httpConn = (HttpURLConnection)conn;
  httpConn.setRequestMethod("GET");
  httpConn.connect();

  if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
   inputStream = httpConn.getInputStream();
  }
 }
 catch (Exception ex)
 {
 }
 return inputStream;
}
}

10
2018-03-22 10:11



Salut j'ai le code le plus facile essayer ceci

    public class ImageFromUrlExample extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);  
            ImageView imgView =(ImageView)findViewById(R.id.ImageView01);
            Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png");
            imgView.setImageDrawable(drawable);

    }

    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) {
        System.out.println("Exc="+e);
        return null;
      }
    }
   }

main.xml

  <LinearLayout 
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
   <ImageView 
       android:id="@+id/ImageView01"
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/>

essaye ça


10
2017-12-02 08:48