Picasso v / s Imageloader v / s Fresco vs Glide [fermé]

344

Résultats:

  1. Différence entre Picasso v / s ImageLoader ici ...
  2. Infos sur la bibliothèque GLIDE ici ...
  3. Récemment, Facebook a publié une nouvelle bibliothèque d'images appelée Fresco

Des questions:

  1. Quelle est la différence entre Picasso v / s Imageloader v / s Fresco
  2. Quand peut-on utiliser Glide
  3. Quelle est la meilleure bibliothèque à utiliser.
  4. Si chaque bibliothèque a sa propre signification, quelles sont-elles?
Devrath
la source
je m'intéresse aussi à la fresque. n'importe qui peut expliquer la différence?
Krit
8
Ce n'est pas l'endroit pour poser des questions basées sur des
opinions
16
@ danny117 alors que pouvons-nous faire ici si nous n'en avons aucune idée?
Anand Savjani
2
@ShobhitPuri cet outil vous aidera à vérifier le nombre de méthodes
Nicholas Ng

Réponses:

189

Je suis l'un des ingénieurs du projet Fresco. Alors, évidemment, je suis partial.

Mais vous n'avez pas à me croire sur parole. Nous avons publié un exemple d'application qui vous permet de comparer les performances de cinq bibliothèques - Fresco, Picasso, UIL, Glide et Volley Image Loader - côte à côte. Vous pouvez l'obtenir à notre dépôt GitHub .

Je dois également souligner que Fresco est disponible sur Maven Central, as com.facebook.fresco:fresco.

Fresco propose des fonctionnalités que Picasso, UIL et Glide n'ont pas encore:

  1. Les images ne sont pas stockées dans le tas Java, mais dans le tas ashmem. Les tampons d'octets intermédiaires sont également stockés dans le tas natif. Cela laisse beaucoup plus de mémoire disponible pour les applications à utiliser. Il réduit le risque de OutOfMemoryErrors. Cela réduit également la quantité d'applications de récupération de place à effectuer, ce qui améliore les performances.
  2. Les images JPEG progressives peuvent être diffusées, comme dans un navigateur Web.
  3. Les images peuvent être rognées autour de n'importe quel point, pas seulement au centre.
  4. Les images JPEG peuvent être redimensionnées nativement. Cela évite le problème de MOO lors de la réduction de la taille d'une image.

Il en existe de nombreux autres ( voir notre documentation ), mais ce sont les plus importants.

Tyronen
la source
1
Merci, pouvez-vous joindre le résultat de "Nous avons publié un exemple d'application qui vous permet de comparer les performances de cinq bibliothèques" dans un format tabulaire à votre réponse?
mmlooloo
1
Fresco a plus de fonctionnalités que les autres, mais est aussi beaucoup plus grande ..
ligi
4
ils ont ajouté un «s» à l'arrière du lien. github.com/facebook/fresco/tree/master/samples
JR Tan
@tyronen im intéressé par Fresco. Cela permet-il de charger des images locales à partir du réseau? Merci
GmloMalo
1
@wedi oui c'est ça.
tyronen
131

Rappelez-vous que c'est une question très basée sur l'opinion, alors j'ai arrêté de faire des fjords et j'ai fait un tableau rapide

entrez la description de l'image ici

Maintenant, la comparaison de bibliothèques est difficile car sur de nombreux paramètres, tous les quatre font à peu près la même chose, sauf peut-être pour Fresco, car il contient tout un tas de nouvelles optimisations de niveau de mémoire. voir une comparaison basée sur mon expérience.

Ayant utilisé le moins Fresco, la réponse pourrait évoluer au fur et à mesure que je continue à l'utiliser et à le comprendre pour les exploits actuels. L used personally'a utilisé la bibliothèque au moins une fois dans une application terminée.

* Remarque - Fresco prend désormais en charge les animations GIF et WebP

Vrashabh Irde
la source
1
Je suis curieux de connaître les cotes inférieures de «personnalisation», «d'utilisation d'image réseau» et «facilité d'utilisation» pour Fresco. Quelle est la base de ces notations?
tyronen
1
Surtout la première utilisation, utilisera Fresco un peu plus pour comprendre, cette réponse pourrait évoluer :)
Vrashabh Irde
1
@Slartibartfast Avez-vous eu l'occasion d'essayer Fresco et la dernière version de Glide 3.0? Les évalueriez-vous toujours de la même façon?
Shobhit Puri
2
Vous avez manqué un aspect important. ... la taille de la bibliothèque. C'est la principale raison pour laquelle Picasso et UImageLoader ne prennent pas en charge GIF. Il serait également bon d'inclure des licences.
Codeversed
3
@AhamadullahSaikat Ceux qu'il a utilisés personnellement.
Pierre
112

Sources de fresque | hors site
(-)
- Taille énorme de la bibliothèque
- Pas de rappel avec vue, paramètres bitmap
- SimpleDraweeView ne prend pas en charge wrap_content
- Taille énorme du cache
(+)
- Chargeur d'images assez rapide (pour les images petites et moyennes)
- Beaucoup de fonctionnalités (streaming, outils de dessin, gestion de la mémoire, etc.)
- Possibilité de configurer directement en xml (par exemple coins arrondis)
- Prise en charge GIF
- Prise en charge WebP et Webp animée


Sources Picasso | hors site
(-)
- Chargement lent de grandes images d'Internet dans ListView
(+)
- Petite taille de la bibliothèque
- Petite taille du cache
- Simple à utiliser
- L'interface utilisateur n'est pas figée
- Prise en charge WebP


Glide sources

(-)
- Grande taille de bibliothèque
(+)
- Petite taille de cache
- Simple à utiliser
- Prise en charge GIF - Prise en charge
WebP
- Chargement rapide de grandes images d'Internet dans ListView
- L'interface utilisateur n'est pas
figée - BitmapPool pour réutiliser la mémoire et donc moins d'événements GC


Sources Universal Image Loader

(-)
- Fonctionnalité limitée (traitement d'image limité)
- Le support du projet est arrêté depuis le 27.11.2015
(+)
- Taille minuscule de la bibliothèque
- Simple d'utilisation


Testé par mes soins sur SGS2 (Android 4.1) (WiFi 8.43 Mbps)
Versions officielles pour Java, pas pour Xamarin!
19 octobre 2015

Je préfère utiliser Glide.
Lisez plus ici .
Comment écrire le cache sur le stockage externe (carte SD) avec Glide.

Volodymyr Kulyk
la source
4
"Chargeur d'images assez rapide" semble contredire "Gel d'application" pour Fresco.
TWiStErRob
2
J'ai Picasso dans un projet Xamarin et l'utilisation de la mémoire était ÉNORME (utilisée pour charger des images dans la vue du recycleur). OutOfMemorytout le temps ...
Vahid Amiri
@ VSG24 il y a 2 options: 1) vous l'utilisez mal. 2) La version Android (java) de la lib n'est pas la même pour Xamarain
Volodymyr Kulyk
1
En tant que négatif Glide (-), j'ai connu beaucoup de scintillement. Les images chargées seraient «réinitialisées» de nulle part
FRR
1
@RJFares J'ai essayé la dernière version récemment, vous pouvez l'utiliser ImagePipelineConfig.setDownsampleEnabled(true)pour l'empêcher de geler. Mais il saute parfois les images d'un GIF. Si vous affichez uniquement des images statiques sur votre application, je pense que vous pouvez l'essayer.
Kimi Chiu
109

Ces réponses sont totalement mon avis

Réponses

  1. Picasso est un chargeur d'images facile à utiliser, il en va de même pour Imageloader. Fresco utilise une approche différente du chargement des images, je ne l'ai pas encore utilisée, mais elle me ressemble plus à une solution pour obtenir des images du réseau et les mettre en cache, puis afficher les images. puis l'inverse comme Picasso / Imageloader / Glide qui pour moi sont plus Afficher l'image à l'écran qui permet également d'obtenir des images du réseau et de les mettre en cache.

  2. Glide essaie d'être quelque peu interchangeable avec Picasso.Je pense que lorsqu'ils ont été créés, l'état d'esprit de Picasso était de suivre les spécifications HTTP et de laisser le serveur décider des politiques de mise en cache et du cache en taille réelle et redimensionner à la demande. Glide est identique à la suite de la spécification HTTP mais essaie d'avoir une empreinte mémoire plus petite en faisant des hypothèses différentes comme mettre en cache les images redimensionnées au lieu des images en taille réelle et afficher des images avec RGB_565 au lieu de RGB_8888. Les deux bibliothèques offrent une personnalisation complète des paramètres par défaut.

  3. Il est vraiment difficile de dire quelle bibliothèque est la meilleure à utiliser. Picasso, Glide et Imageloader sont des bibliothèques bien respectées et bien testées qui sont toutes faciles à utiliser avec les paramètres par défaut. Picasso et Glide nécessitent une seule ligne de code pour charger une image et avoir un espace réservé et une image d'erreur. Personnaliser le comportement ne nécessite pas non plus beaucoup de travail. Il en va de même pour Imageloader qui est également une bibliothèque plus ancienne que Picasso et Glide, mais je ne l'ai pas utilisée, donc je ne peux pas en dire beaucoup sur les performances / l'utilisation de la mémoire / les personnalisations, mais en regardant le fichier Lisez-moi sur github, j'ai l'impression qu'il est également relativement facile à utiliser et à configurer. Donc, en choisissant l'une de ces 3 bibliothèques, vous ne pouvez pas prendre la mauvaise décision, c'est plus une question de goût personnel.Comme le SDK facebook n'est toujours pas officiellement publié sur mavenCentral, je n'ai pas utilisé facebook sdk depuis septembre 2014 et il semble qu'ils aient mis la première version en ligne sur mavenCentral en octobre 2014. Il faudra donc un certain temps avant que nous puissions en obtenir bonne opinion à ce sujet.

  4. entre les 3 grandes bibliothèques de noms, je pense qu'il n'y a pas de différences significatives. La seule qui se démarque est la fresque, mais c'est parce qu'elle a une approche différente et est nouvelle et non testée au combat.

Égide
la source
3
Mineure: il semble que le SDK Facebook soit officiellement disponible en tant qu'AAR sur Maven Central depuis un certain temps. developers.facebook.com/docs/android/…
orip
1
merci pour la correction, ça fait un moment que je n'ai pas utilisé le SDK facebook donc je n'avais pas vérifié ça. Pourtant, il leur a fallu trop de temps pour s'y installer.
Aegis
1
Un an plus tard, après avoir lu ceci, je me demande toujours si je devrais utiliser Frescoe et je ne vois toujours pas pourquoi je devrais. Alors que Glide et Picasso fonctionnent hors de la boîte, Frescoe a juste besoin de vous pour faire tellement de choses qu'il ne semble pas que cela en vaille la peine et la taille ....
Frostymarvelous
Je tiens à souligner que la fresque a des problèmes de mémoire: github.com/facebook/react-native/issues/8711
Fabian Zeindl
J'ai également rencontré des problèmes de mémoire avec la fresque, malheureusement, il semble que ce soit une fresque ou une glisse si vous avez besoin d'un support gif animé. FWIW est également un lien vers des détails de comparaison supplémentaires.
Nick
63

Ni Glide ni Picasso ne sont parfaits. La façon dont Glide charge une image en mémoire et fait la mise en cache est meilleure que Picasso qui permet de charger une image beaucoup plus rapidement. En outre, cela aide également à empêcher une application de OutOfMemoryError populaire. Le chargement d'animation GIF est une fonctionnalité de mise à mort fournie par Glide. Quoi qu'il en soit, Picasso décode une image de meilleure qualité que Glide.

Laquelle je préfère? Bien que j'utilise Picasso depuis si longtemps, je dois admettre que je préfère maintenant Glide. Mais je vous recommande de changer le format Bitmap en ARGB_8888 et de laisser Glide mettre en cache à la fois l'image en taille réelle et la redimensionner en premier. Le reste ferait bien votre travail!

  • Le nombre de méthodes de Picasso et Glide est à 840 et 2678 respectivement.
  • La taille de Picasso (v2.5.1) est d'environ 118 Ko tandis que celle de Glide (v3.5.2) est d'environ 430 Ko.
  • Glide crée des images mises en cache par taille tandis que Picasso enregistre l'image complète et la traite, donc au chargement, elle s'affiche plus rapidement avec Glide mais utilise plus de mémoire.
  • Glide utilise moins de mémoire par défaut avec RGB_565.

+1 Pour Picasso Helper Helper .

Il y a un poste qui parle beaucoup de Picasso vs Glide poste

Daniel Gomez Rico
la source
Excellent article. Je passe à Glide maintenant. Encore mieux que Picasso n'est pas ce que j'avais en tête. :)
Sufian
1
Un problème que je vois est que Glide nécessite l'API 10. C'est un peu un problème car je ne peux pas supprimer le support API 9 de mon application. Sinon, sûrement une meilleure façon de procéder.
Sufian
Pouvez-vous expliquer pourquoi utilisez-vous l'API 9? juste curieux ...
Daniel Gomez Rico
Sauf s'il me manque quelque chose, c'est pour supporter toutes les versions de Gingerbread.
Sufian
1
Je pense que c'est un peu subjectif. Mais il vaut mieux prendre en charge autant d'appareils / versions que possible. Non? :)
Sufian
18

Je veux partager avec vous un benchmark que j'ai fait entre Picasso, Universal Image Loader et Glide : https://bit.ly/1kQs3QN

Fresco était hors de référence car pour le projet sur lequel je menais le test, nous ne voulions pas refactoriser nos mises en page (à cause de la vue Drawee).

Ce que je recommande est Universal Image Loader en raison de sa personnalisation, de la consommation de mémoire et de l'équilibre entre la taille et les méthodes.

Si vous avez un petit projet, je choisirais Glide (ou essayez Fresco).

shollmann
la source