Picasso v / s Imageloader v / s Fresco vs Glide [geschlossen]


344

Ergebnisse:

  1. Unterschied zwischen Picasso v / s ImageLoader hier ...
  2. Infos zur Bibliothek GLIDE hier ...
  3. Jetzt hat Facebook kürzlich eine neue Bildbibliothek namens Fresco veröffentlicht

Fragen:

  1. Was ist der Unterschied zwischen Picasso v / s Imageloader v / s Fresco
  2. Wann können wir Glide verwenden?
  3. Welches ist die beste Bibliothek zu verwenden.
  4. Wenn jede Bibliothek ihre eigene Bedeutung hat, welche sind das?

Ich interessiere mich auch für Fresko. kann jemand den unterschied erklären?
Krit


8
Dies ist nicht der Ort, um meinungsbasierte Fragen zu stellen
danny117

16
@ danny117 also was können wir hier machen wenn wir keine ahnung davon haben?
Anand Savjani

2
@ ShobhitPuri dieses Tool wird Ihnen helfen, die Anzahl der Methoden zu überprüfen
Nicholas Ng

Antworten:


189

Ich bin einer der Ingenieure des Fresco-Projekts. Also bin ich offensichtlich voreingenommen.

Aber du musst nicht mein Wort dafür nehmen. Wir haben eine Beispiel-App veröffentlicht, mit der Sie die Leistung von fünf Bibliotheken - Fresco, Picasso, UIL, Glide und Volley Image Loader - nebeneinander vergleichen können. Sie können es in unserem GitHub-Repo bekommen .

Ich sollte auch darauf hinweisen, dass Fresco auf Maven Central als verfügbar ist com.facebook.fresco:fresco.

Fresco bietet Funktionen, die Picasso, UIL und Glide noch nicht haben:

  1. Bilder werden nicht im Java-Heap gespeichert, sondern im Ashmem-Heap. Zwischenbytepuffer werden ebenfalls im nativen Heap gespeichert. Dadurch steht den Anwendungen viel mehr Speicher zur Verfügung. Es reduziert das Risiko von OutOfMemoryErrors. Es reduziert auch die Menge an Garbage Collection-Apps, was zu einer besseren Leistung führen muss.
  2. Progressive JPEG-Bilder können wie in einem Webbrowser gestreamt werden.
  3. Bilder können um jeden Punkt zugeschnitten werden, nicht nur um die Mitte.
  4. Die Größe von JPEG-Bildern kann nativ geändert werden. Dies vermeidet das Problem des OOMing beim Versuch, ein Bild zu verkleinern.

Es gibt viele andere ( siehe unsere Dokumentation ), aber diese sind die wichtigsten.


1
Vielen Dank, können Sie das Ergebnis von "Wir haben eine Beispiel-App veröffentlicht, mit der Sie die Leistung von fünf Bibliotheken vergleichen können" in tabellarischer Form an Ihre Antwort anhängen?
mmlooloo

1
Fresko hat einige mehr Funktionen als die anderen, ist aber auch viel größer ..
Ligi

4
Sie haben ein 's' am Ende des Links hinzugefügt. github.com/facebook/fresco/tree/master/samples
JR Tan

@tyronen Ich interessiere mich für Fresko. Ermöglicht es das Laden lokaler Bilder stattdessen aus dem Netzwerk? Danke
GmloMalo

1
@wedi ja das ist es.
Tyronen

131

Wohlgemerkt, dass dies eine sehr meinungsbasierte Frage ist, also habe ich aufgehört, Fjorde zu bauen und einen schnellen Tisch gemacht

Geben Sie hier die Bildbeschreibung ein

Jetzt ist der Bibliotheksvergleich schwierig, da bei vielen Parametern alle vier so ziemlich dasselbe tun, außer möglicherweise bei Fresco, weil es eine ganze Reihe neuer Optimierungen auf Speicherebene gibt. Lassen Sie mich wissen, ob Sie bestimmte Parameter möchten siehe einen Vergleich für basierend auf meiner Erfahrung.

Nachdem ich Fresco am wenigsten verwendet habe, könnte sich die Antwort weiterentwickeln, wenn ich sie weiterhin für aktuelle Exploits verwende und verstehe. Der used personallyhat die Bibliothek mindestens einmal in einer fertigen App benutzt.

* Hinweis - Fresco unterstützt jetzt sowohl GIF- als auch WebP-Animationen


1
Ich bin gespannt auf die niedrigeren Bewertungen für "Anpassbarkeit", "Netzwerk-Image-Nutzung" und "Benutzerfreundlichkeit" für Fresco. Was ist die Basis dieser Bewertungen?
Tyronen

1
Meistens wird die erste Verwendung verwendet, um Fresco etwas besser zu verstehen. Diese Antwort könnte sich weiterentwickeln :)
Vrashabh Irde

1
@Slartibartfast Hattest du die Gelegenheit, Fresco und die neueste Glide 3.0-Version auszuprobieren? Würden Sie sie immer noch gleich bewerten?
Shobhit Puri

2
Sie haben einen wichtigen Aspekt übersehen. ... die Bibliotheksgröße. Dies ist der Hauptgrund, warum Picasso und UImageLoader GIF nicht unterstützen. Lizenzen wären auch gut einzuschließen.
Codeversed

3
@AhamadullahSaikat Die, die er persönlich benutzt hat.
Pierre

112

Fresko Quellen | off site
(-)
- Riesige Bibliotheksgröße
- Kein Rückruf mit Ansicht, Bitmap-Parameter
- SimpleDraweeView unterstützt wrap_content nicht
- Riesige Cache-Größe
(+)
- Ziemlich schneller Bildlader (für kleine und mittlere Bilder)
- Viele Funktionen (Streaming, Zeichenwerkzeuge, Speicherverwaltung usw.)
- Möglichkeit zur direkten Einrichtung in XML (z. B. runde Ecken)
- GIF-Unterstützung
- Unterstützung für WebP und animiertes Webp


Picasso- Quellen | Off Site
(-)
- Langsames Laden großer Bilder aus dem Internet in ListView
(+) - Kleine Größe der
Bibliothek
- Kleine Größe des Caches
- Einfache Verwendung
- Die Benutzeroberfläche ist nicht eingefroren
- WebP-Unterstützung


Glide Quellen

(-)
- Große Größe der Bibliothek
(+)
- Tinny Größe von Cache
- Einfach im Gebrauch
- GIF - Unterstützung
- WebP Unterstützung
- Schnelles Laden große Bilder aus dem Internet in Listview
- UI ist nicht einfrieren
- BitmapPool zum Nachnutzung Speicher und somit geringere GC-Ereignisse


Universal Image Loader- Quellen

(-)
- Eingeschränkte Funktionalität (eingeschränkte Bildverarbeitung)
- Die Projektunterstützung wurde seit dem 27.11.2015 eingestellt
(+)
- Kleine Bibliotheksgröße
- Einfache Verwendung


Getestet von mir auf SGS2 (Android 4.1) (WiFi 8.43 Mbps)
Offizielle Versionen für Java, nicht für Xamarin!
19. Oktober 2015

Ich bevorzuge Glide.
Lesen Sie hier mehr .
So schreiben Sie mit Glide einen Cache in den externen Speicher (SD-Karte) .


4
"Ziemlich schneller Image Loader" scheint "App Freeze" für Fresco zu widersprechen.
TWiStErRob

2
Ich habe Picasso in einem Xamarin-Projekt und die Speichernutzung war RIESIG (zum Laden von Bildern in die Recycler-Ansicht). OutOfMemorydie ganze Zeit ...
Vahid Amiri

@ VSG24 gibt es 2 Möglichkeiten: 1) Sie verwenden es falsch. 2) Android (Java) Version der Bibliothek ist nicht das gleiche für Xamarain
Volodymyr Kulyk

1
Als Glide-Negativ (-) habe ich viel Flackern erlebt. Geladene Bilder würden aus dem Nichts "zurückgesetzt"
FRR

1
@RJFares Ich habe kürzlich die neueste Version ausprobiert, mit der Sie verhindern können ImagePipelineConfig.setDownsampleEnabled(true), dass sie einfriert. Manchmal werden jedoch Frames eines GIF übersprungen. Wenn Sie nur statische Bilder in Ihrer App anzeigen, können Sie es versuchen.
Kimi Chiu

109

Diese Antworten sind absolut meine Meinung

Antworten

  1. Picasso ist ein einfach zu bedienender Image Loader, ebenso wie Imageloader. Fresco verwendet einen anderen Ansatz zum Laden von Bildern. Ich habe ihn noch nicht verwendet, aber es scheint mir eher eine Lösung zu sein, um Bilder aus dem Netzwerk abzurufen und zwischenzuspeichern und dann die Bilder anzuzeigen. dann umgekehrt wie Picasso / Imageloader / Glide, die für mich eher Bilder auf dem Bildschirm anzeigen, die auch Bilder aus dem Netzwerk abrufen und zwischenspeichern.

  2. Glide versucht, mit Picasso etwas austauschbar zu sein. Ich denke, als sie erstellt wurden, folgte Picassos Denkweise den HTTP-Spezifikationen und ließ den Server die Caching-Richtlinien und den Cache in voller Größe festlegen und bei Bedarf die Größe ändern. Glide entspricht dem Befolgen der HTTP-Spezifikation, versucht jedoch, einen geringeren Speicherbedarf zu erzielen, indem verschiedene Annahmen getroffen werden, z. B. das Ändern der Größe der Bilder anstelle der Bilder in voller Größe und das Anzeigen von Bildern mit RGB_565 anstelle von RGB_8888. Beide Bibliotheken bieten eine vollständige Anpassung der Standardeinstellungen.

  3. Welche Bibliothek am besten zu verwenden ist, ist wirklich schwer zu sagen. Picasso, Glide und Imageloader sind angesehene und getestete Bibliotheken, die alle mit den Standardeinstellungen einfach zu verwenden sind. Sowohl Picasso als auch Glide benötigen nur eine Codezeile, um ein Bild zu laden und einen Platzhalter und ein Fehlerbild zu haben. Das Anpassen des Verhaltens erfordert auch nicht so viel Arbeit. Gleiches gilt für Imageloader, eine ältere Bibliothek als Picasso und Glide. Ich habe sie jedoch nicht verwendet, kann also nicht viel über Leistung / Speichernutzung / Anpassungen sagen, aber wenn ich mir die Readme-Datei auf Github ansehe, habe ich den Eindruck, dass dies auch der Fall ist relativ einfach zu bedienen und einzurichten. Wenn Sie also eine dieser drei Bibliotheken auswählen, können Sie nicht die falsche Entscheidung treffen, es ist eher eine Frage des persönlichen Geschmacks.Da das Facebook SDK immer noch nicht offiziell auf mavenCentral veröffentlicht ist, habe ich Facebook SDK seit September 2014 nicht mehr verwendet und es scheint, dass sie die erste Version im Oktober 2014 auf mavenCentral online gestellt haben. Es wird also einige Zeit dauern, bis wir welche bekommen können gute Meinung dazu.

  4. Ich denke, es gibt keine signifikanten Unterschiede zwischen den drei großen Namensbibliotheken. Das einzige, was auffällt, ist das Fresko, aber das liegt daran, dass es einen anderen Ansatz hat und neu und nicht kampferprobt ist.


3
Minor nit: Es scheint, dass das Facebook SDK seit einiger Zeit offiziell als AAR auf Maven Central verfügbar ist. entwickler.facebook.com/docs/android/…
orip

1
Vielen Dank für die Korrektur. Es ist eine Weile her, seit ich das Facebook SDK verwendet habe, also hatte ich das nicht überprüft. Trotzdem brauchten sie zu lange, um sich dort anzulegen.
Aegis

1
Ein Jahr später, nachdem ich dies gelesen habe, frage ich mich immer noch, ob ich Frescoe verwenden soll und ich kann immer noch nicht verstehen, warum ich es tun sollte. Während Glide und Picasso sofort arbeiten, müssen Sie bei Frescoe nur so viele Dinge tun, dass es nicht so aussieht, als wäre es das wert und die Größe ...
frostymarvelous

Ich möchte darauf hinweisen, dass Fresko Speicherprobleme hat: github.com/facebook/react-native/issues/8711
Fabian Zeindl

Ich habe auch die Speicherprobleme mit Fresko erlebt, leider scheint es entweder Fresko oder Gleiten zu sein, wenn Sie animierte GIF-Unterstützung benötigen. Auch FWIW hier ist ein Link zu einigen zusätzlichen Vergleichsdetails.
Nick

63

Weder Glide noch Picasso sind perfekt. Die Art und Weise, wie Glide ein Bild in den Speicher lädt und das Caching durchführt, ist besser als bei Picasso, wodurch ein Bild viel schneller geladen werden kann. Darüber hinaus wird verhindert, dass eine App den beliebten OutOfMemoryError verwendet. Das Laden von GIF-Animationen ist eine Kill-Funktion von Glide. Auf jeden Fall dekodiert Picasso ein Bild mit besserer Qualität als Glide.

Welches bevorzuge ich? Obwohl ich Picasso so lange benutze, muss ich zugeben, dass ich jetzt Glide bevorzuge. Ich würde Ihnen jedoch empfehlen, das Bitmap-Format in ARGB_8888 zu ändern und Glide sowohl das Bild in voller Größe als auch die Größe eines Bilds zuerst zwischenspeichern zu lassen. Der Rest würde deine Arbeit großartig machen!

  • Die Methodenanzahl von Picasso und Glide liegt bei 840 bzw. 2678.
  • Die Größe von Picasso (v2.5.1) beträgt ca. 118 KB, während die von Glide (v3.5.2) ca. 430 KB beträgt.
  • Glide erstellt zwischengespeicherte Bilder pro Größe, während Picasso das gesamte Bild speichert und verarbeitet. Beim Laden wird es mit Glide schneller angezeigt, benötigt jedoch mehr Speicher.
  • Glide verbraucht standardmäßig weniger Speicher mit RGB_565.

+1 Für Picasso Palette Helper .

Es gibt einen Beitrag, der viel über Picasso vs Glide- Beitrag spricht


Hervorragender Artikel. Ich wechsle jetzt zu Glide. Noch besser als Picasso ist nicht das, was ich mir vorgestellt habe. :)
Sufian

1
Ein Problem, das ich sehe, ist, dass Glide API 10 benötigt. Es ist ein kleines Problem, da ich die API 9-Unterstützung nicht aus meiner App entfernen kann. Ansonsten sicherlich ein besserer Weg.
Sufian

Können Sie erklären, warum Sie API 9 verwenden? nur neugierig ...
Daniel Gomez Rico

Sofern mir nichts fehlt, sollen alle Lebkuchenversionen unterstützt werden.
Sufian

1
Ich finde es etwas subjektiv. Es ist jedoch besser, so viele Geräte / Versionen wie möglich zu unterstützen. Nein? :)
Sufian

18

Ich möchte Ihnen einen Benchmark mitteilen, den ich zwischen Picasso, Universal Image Loader und Glide durchgeführt habe : https://bit.ly/1kQs3QN

Fresco war nicht im Benchmark, weil wir für das Projekt, in dem ich den Test durchgeführt habe, unsere Layouts nicht umgestalten wollten (aufgrund der Drawee-Ansicht).

Was ich empfehle, ist Universal Image Loader aufgrund seiner Anpassung, des Speicherverbrauchs und des Gleichgewichts zwischen Größe und Methoden.

Wenn Sie ein kleines Projekt haben, würde ich mich für Glide entscheiden (oder Fresco ausprobieren).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.