Picasso: was ist das, Bildladung und Arbeit in Android-Anwendungen

Autor: IT Sectr Veröffentlicht: 2026-05-05 Lesezeit: 8 Min.

Picasso ist eine Bibliothek zum Laden von Bildern in Android-Anwendungen, entwickelt von Square. Die Bibliothek bietet eine einfache und ausdrucksstarke API zum Laden, Cachen und Anzeigen von Grafiken aus dem Netzwerk. Laut den Picasso-GitHub-Statistiken wurde die Bibliothek mehr als 100.000 Mal heruntergeladen. Picasso verwaltet automatisch den Speicher und speichert Bilder auf mehreren Ebenen zwischen.

Wichtige Punkte

  • Picasso — Bildladebibliothek von Square mit einfacher API für Android
  • Caching auf Disk und im Speicher reduziert Ladezeit für wiederholte Bilder
  • Transformationen Crop, Resize und Rotate werden auf Bilder im laufenden Betrieb angewendet
  • Placeholder und Fehlerbilder werden während des Ladens und bei Fehlern angezeigt
  • Ladeprioritäten ermöglichen die Verwaltung der Reihenfolge der Bildanzeige

Was ist Picasso?

Picasso ist eine Bibliothek zum asynchronen Laden von Bildern in Android, erstellt von Square. Sie wurde nach dem Künstler Pablo Picasso benannt und spiegelt die Philosophie der Bibliothek wider: eine komplexe Aufgabe in eine einfache und elegante API zu verwandeln. Es ist die beliebteste Bibliothek zum Laden von Bildern in der Android-Community.

Die Architektur von Picasso ist minimalistisch: Die Bibliothek verwendet einen Thread-Pool zum Laden, LruCache für den Arbeitsspeicher-Cache und DiskLruCache für den Disk-Cache. Im Gegensatz zu Glide benötigt Picasso keine AppGlideModule-Konfiguration und ist sofort nach Hinzufügen der Abhängigkeit einsatzbereit. Das macht es zur idealen Wahl für Prototypen und kleine Projekte.

Picasso 2.8 ist die neueste stabile Version, kompatibel mit Android API 21+ und Java 8+. Die Bibliothek benötigt keine Konfiguration von Gradle-Plugins oder Annotationen, was die Migration zwischen Versionen vereinfacht und die Wahrscheinlichkeit von Fehlern bei Updates reduziert. Trotz seiner langen Geschichte ist Picasso weiterhin in tausenden Projekten weltweit gefragt.

Die Hauptaufgabe von Picasso ist es, ein Bild per URL zu laden, zu dekodieren, bei Bedarf die Größe zu ändern und in einem ImageView anzuzeigen. Die Bibliothek verwaltet automatisch Hintergrund-Threads, Cache und die Wiederverwendung von ImageView in Listen.

Seit seiner Veröffentlichung im Jahr 2013 ist Picasso zum Standard für das Laden von Bildern in der Android-Community geworden. Die Bibliothek wird in tausenden Anwendungen verwendet, dank ihrer minimalen Einstiegshürde — für die erste Verwendung reicht eine einzige Codezeile.

Prioritäten und Anfrageabbruch

Prioritäten in Picasso ermöglichen die Verwaltung der Ladereihenfolge von Bildern. Standardmäßig haben alle Anfragen normale Priorität, aber für kritische Bilder kann eine hohe Priorität über die Methode priority gesetzt werden. Wenn ein ImageView wiederverwendet wird (z.B. in RecyclerView), bricht Picasso automatisch die vorherige Anfrage ab und startet eine neue, um Bildflimmern beim Scrollen zu verhindern.

Hauptfunktionen von Picasso

Picasso bietet eine Reihe von Funktionen, die die wichtigsten Szenarien der Bildbearbeitung in mobilen Anwendungen ohne unnötige Komplexität abdecken.

Mehrstufiges Caching

Der Cache von Picasso besteht aus zwei Ebenen: RAM für schnellen Zugriff und Disk zur dauerhaften Speicherung. Bei der Anfrage eines Bildes überprüft die Bibliothek zunächst den Arbeitsspeicher-Cache, dann die Disk und erst danach führt sie eine Netzwerkanfrage durch. Dies beschleunigt die Anzeige wiederholt geladener Bilder erheblich.

Bildtransformationen

Transformationen ermöglichen das Ändern der Größe, Zuschneiden oder Drehen eines Bildes, ohne das Original jedes Mal zu dekodieren. Picasso bietet integrierte Transformationen CenterCrop und CenterInside und ermöglicht auch die Erstellung benutzerdefinierter Transformationen über das Transformation-Interface. Transformierte Bilder werden separat zwischengespeichert.

Placeholder und Fehlerbilder

Der Placeholder wird während des Ladens des Bildes aus dem Netzwerk angezeigt und gibt dem Benutzer visuelles Feedback. Ein Fehlerbild wird angezeigt, wenn das Laden fehlschlägt. Picasso unterstützt auch ein Bild, das angezeigt wird, bis eine neue Version geladen ist, was für aktualisierbare Avatare nützlich ist.

Laden aus verschiedenen Quellen

Picasso unterstützt das Laden von Bildern aus URLs, Ressourcen, Dateien, Content Providern und URIs. Die Methode load() ist für alle diese Typen überladen, und die Bibliothek ermittelt automatisch die Quelle. Für Ressourcen und Dateien führt Picasso keine Netzwerkanfrage durch, sondern lädt die Daten direkt, was die Anzeige integrierter Grafiken beschleunigt.

Wie funktioniert Picasso?

Picasso verwendet eine Architektur, die auf RequestCreator und Dispatcher basiert. Jede Anfrage wird über Picasso.get().load() erstellt und in einem Thread-Pool ausgeführt. Der Dispatcher verwaltet die Anfragewarteschlange, Prioritäten und den Abbruch bei Wiederverwendung eines ImageView.

Anfragearchitektur

Beim Aufruf von into(view) erstellt Picasso ein Action-Objekt, das URL, Transformationen, Ziel und Callback enthält. Die Action wird in die Dispatcher-Warteschlange eingereiht. Die Engine lädt das Bild über den Downloader (standardmäßig OkHttp), dekodiert das Bitmap, wendet Transformationen an und liefert das Ergebnis an den UI-Thread. Alle Bilder werden automatisch an die ImageView-Größe angepasst.

java
Picasso.get()
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .resize(400, 300)
    .centerCrop()
    .into(imageView)

Installation und Konfiguration von Picasso

Die Installation von Picasso erfolgt über Gradle. Die Bibliothek wird über Maven Central vertrieben und erfordert keine komplexe Konfiguration. Die Mindestversion der Android-API ist 21.

Hinzufügen der Abhängigkeit

Fügen Sie in der modulbezogenen Datei build.gradle implementation ‘com.squareup.picasso:picasso:2.8’ hinzu. Nach der Gradle-Synchronisation ist Picasso einsatzbereit. Für Netzwerkoperationen verwendet Picasso automatisch OkHttp, wenn es im Projekt vorhanden ist, oder die integrierte HttpURLConnection.

groovy
dependencies {
    implementation "com.squareup.picasso:picasso:2.8"
}

// Kafka zum Laden aus OkHttp (optional)
implementation "com.squareup.okhttp3:okhttp:4.12.0"

Debug-Indikator und Cache

Der Debug-Indikator von Picasso zeigt ein farbiges Dreieck in der Ecke jedes Bildes: rot für Netzwerkladen, blau für Disk-Cache, grün für Arbeitsspeicher-Cache. Aktiviert wird er durch Aufruf von setIndicatorsEnabled(true) auf der Picasso-Instanz. Die Standard-Cache-Größe beträgt 15% des verfügbaren Arbeitsspeichers des Geräts.

Zur Konfiguration einer benutzerdefinierten Picasso-Instanz verwenden Sie Picasso.Builder. Damit können Sie einen Executor für Hintergrund-Threads, einen Downloader für Netzwerkanfragen, MemoryCache und DiskCache festlegen. Eine benutzerdefinierte Instanz ist besonders in Tests nützlich, wo der Downloader durch einen Stub ersetzt werden kann, der ein Bild ohne Netzwerkanfrage zurückgibt.

Beispiele zur Verwendung von Picasso

Die folgenden Beispiele zeigen typische Szenarien für die Arbeit mit Picasso: Laden eines einfachen Bildes, Verwendung von Transformationen und Laden in RecyclerView.

Laden eines Bildes in ImageView

Das einfache Laden in ein ImageView erfolgt mit einem einzigen Aufruf. Picasso passt das Bild automatisch an die Maße der Ansicht unter Berücksichtigung von scaleType an. Ein Placeholder wird angezeigt, bis der Ladevorgang abgeschlossen ist, und ein Fehlerbild wird bei einem Verbindungsfehler angezeigt.

java
Picasso.get()
    .load("https://example.com/photo.jpg")
    .placeholder(R.drawable.loading)
    .error(R.drawable.broken_image)
    .fit()
    .centerCrop()
    .into(imageView)

Anwenden einer benutzerdefinierten Transformation

BlurTransformation verwischt das Bild mit einem bestimmten Radius. Benutzerdefinierte Transformationen implementieren das Transformation-Interface mit der Methode transform. Der Cache speichert das Transformationsergebnis unter einem eindeutigen Schlüssel, um eine erneute Anwendung zu vermeiden.

java
public class BlurTransformation implements Transformation {
    @Override
    public Bitmap transform(Bitmap source) {
        Bitmap blurred = Bitmap.createBitmap(source);
        RenderScript rs = RenderScript.create(context);
        // Anwendung von Unschärfe
        source.recycle();
        return blurred;
    }

    @Override
    public String key() {
        return "blur";
    }
}

Laden von Bildern in RecyclerView

In RecyclerView bricht Picasso automatisch Anfragen für ImageViews ab, die aus dem Bildschirm gescrollt wurden, und verwendet bereits geladene Bilder wieder. Dies verhindert Speicherlecks und gewährleistet ein flüssiges Scrollen.

java
public void onBindViewHolder(ViewHolder holder, int position) {
    String url = items.get(position).getImageUrl();
    Picasso.get()
        .load(url)
        .fit()
        .centerCrop()
        .into(holder.imageView);
}

Picasso vs Glide: Bibliotheksvergleich

Der Vergleich von Picasso und Glide ist eine häufige Frage bei der Wahl einer Bildladebibliothek für Android. Beide Bibliotheken lösen die gleiche Aufgabe, haben aber unterschiedliche Prioritäten und Nutzungseigenschaften.

Picasso ist besser geeignet für Projekte, bei denen Einfachheit und minimale APK-Größe wichtig sind. Glide wird gewählt, wenn GIF-Unterstützung, Videoframes und maximale Speicheroptimierung benötigt werden. Glide skaliert das Bild automatisch auf die genaue ImageView-Größe, was den Speicherverbrauch in einigen Szenarien um bis zu 50% im Vergleich zu Picasso reduziert.

In Leistungstests zeigt Glide bessere Ergebnisse bei der Arbeit mit RecyclerView dank seines Vorlademechanismus und des automatischen Anfrageabbruchs beim schnellen Scrollen. Picasso verwendet eine einfachere Strategie, was es vorhersagbar, aber bei großen Datenmengen weniger effizient macht.

Picasso konzentriert sich auf API-Einfachheit und minimale Größe. Glide bietet eine breitere Funktionalität: Unterstützung für GIFs, animierte Bilder, Videoframes und Lebenszyklus-Integration. Glide verwaltet auch den Speicher effizienter dank automatischer Skalierung auf ImageView-Größe.

KriteriumPicassoGlide
Bibliotheksgröße~120 KB~500 KB
GIF-UnterstützungNeinJa
VideoframesNeinJa
EntwicklerSquareGoogle (Bumptech)
APIFluent-KetteRequestBuilder

Laut Android Developer Relations wird Glide von Google als bevorzugte Bibliothek für das Laden von Bildern in neuen Projekten empfohlen. Picasso bleibt eine ausgezeichnete Wahl für einfache Projekte, bei denen keine GIFs und Videoframes benötigt werden.

Häufig gestellte Fragen

Wie unterscheidet sich Picasso von Glide?

Picasso ist kleiner und einfacher zu bedienen. Glide unterstützt GIFs und Videoframes, verwaltet den Speicher effizienter und wird von Google empfohlen. Die Wahl hängt vom Bedarf des Projekts an zusätzlichen Formaten ab.

Wie löscht man den Picasso-Cache?

Zum Löschen des Picasso-Caches verwenden Sie die Methode Picasso.get().invalidate(url) für ein einzelnes Bild oder shutdown() für eine vollständige Löschung. Der Disk-Cache wird bei einer Neuinstallation der App oder über die Systemeinstellungen gelöscht.

Wie behandelt Picasso die Bildschirmrotation?

Picasso ist nicht von der Bildschirmrotation abhängig. Geladene Bilder werden im Cache gespeichert und bei der Neuerstellung der Activity daraus angezeigt. Zur Beschleunigung verwenden Sie ViewModel in Kombination mit Picasso, um geladene Daten zu erhalten.

Kann man Picasso mit Kotlin verwenden?

Ja, Picasso ist vollständig kompatibel mit Kotlin. Kotlin-Entwickler können Erweiterungsfunktionen für eine prägnantere Syntax verwenden oder die Bibliothek koptional zur Behandlung von Null-Werten beim Laden von Bildern einsetzen.

Wie verwaltet Picasso den Speicher?

Picasso verwendet LruCache für den Arbeitsspeicher-Cache und räumt automatisch ungenutzte Bilder auf. Die Standard-Cache-Größe beträgt 15% des verfügbaren Arbeitsspeichers der App. Bei Speichermangel gibt Picasso Ressourcen über onTrimMemory frei.

Zusammenfassung

  • Picasso — eine leichte Bildladebibliothek von Square mit minimaler API
  • Caching auf Disk und im Speicher mit automatischer Größenverwaltung
  • Transformationen CenterCrop, CenterInside und benutzerdefinierte über das Transformation-Interface
  • Placeholder und Fehlerbilder für ein reibungsloses Benutzererlebnis
  • Automatischer Anfrageabbruch in RecyclerView verhindert unnötiges Laden
  • Debug-Indikator hilft, die Bildquelle visuell zu identifizieren
  • Bibliotheksgröße von nur 120 KB — minimale Auswirkung auf die APK-Größe

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch