570 Stimmen

Wie lädt man eine ImageView per URL in Android?

Wie verwendet man ein per URL referenziertes Bild in einer ImageView ?

735voto

Android Developer Punkte 7339

Desde Android-Entwickler :

// 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);
    }
}

Stellen Sie sicher, dass Sie die folgenden Berechtigungen in Ihrem AndroidManifest.xml um auf das Internet zuzugreifen.

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

217voto

chiragkyada Punkte 3445

1. Picasso ermöglicht das problemlose Laden von Bildern in Ihrer Anwendung - oft in einer einzigen Codezeile!

Gradle verwenden:

implementation 'com.squareup.picasso:picasso:(insert latest version)'

Nur eine Zeile Code!

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

2. Gleiten Eine Bibliothek zum Laden und Zwischenspeichern von Bildern für Android mit Schwerpunkt auf reibungslosem Scrollen

Gradle verwenden:

repositories {
   mavenCentral() 
   google()
}

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

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

3. Fresko ist ein leistungsstarkes System zur Anzeige von Bildern in Android-Anwendungen. Fresco kümmert sich um das Laden und Anzeigen von Bildern, sodass Sie sich nicht darum kümmern müssen.

Erste Schritte mit Fresco

151voto

Steve Punkte 20317

Sie müssen das Bild zunächst herunterladen

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;
}

Dann verwenden Sie Imageview.setImageBitmap, um die Bitmap in der ImageView zu setzen

74voto

Praveen Punkte 88704

Wie auch immer, die Leute fragen mich, ob ich meinen Kommentar als Antwort posten soll. ich poste.

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

71voto

koush Punkte 2972

Ich habe eine Klasse geschrieben, um dies zu handhaben, da es ein wiederkehrender Bedarf in meinen verschiedenen Projekten zu sein scheint:

https://github.com/koush/UrlImageViewHelper

UrlImageViewHelper füllt eine ImageView mit einem Bild, das unter einer einer URL gefunden wurde.

Das Beispiel macht ein Google Image Suche und lädt/zeigt die Ergebnisse asynchron.

UrlImageViewHelper wird automatisch herunter, speichert und zwischenspeichert alle Bild-Urls der BitmapDrawables. Doppelte Urls werden nicht zweimal in den Speicher doppelt geladen. Bitmap-Speicher wird verwaltet mit Hilfe einer schwachen Referenz-Hashtabelle verwaltet, Sobald das Bild also nicht mehr nicht mehr verwendet wird, wird es automatisch automatisch entsorgt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X