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

344

Recomendaciones:

  1. Diferencia entre Picasso v / s ImageLoader aquí ...
  2. Información sobre la biblioteca GLIDE aquí ...
  3. Ahora, recientemente, Facebook lanzó una nueva biblioteca de imágenes llamada Fresco

Preguntas:

  1. ¿Cuál es la diferencia entre Picasso v / s Imageloader v / s Fresco?
  2. ¿Cuándo podemos usar Glide?
  3. Cuál es la mejor biblioteca para usar.
  4. Si cada biblioteca tiene su propio significado, ¿cuáles son?
Devrath
fuente
Estoy interesado en fresco también. Alguien puede explicar la diferencia?
Krit
8
Este no es el lugar para hacer preguntas basadas en opiniones
danny117
16
@ danny117 entonces, ¿qué podemos hacer aquí si no tenemos idea al respecto?
Anand Savjani
2
@ShobhitPuri esta herramienta lo ayudará a verificar el recuento de métodos
Nicholas Ng

Respuestas:

189

Soy uno de los ingenieros del proyecto Fresco. Así que obviamente soy parcial.

Pero no tienes que creer mi palabra. Hemos lanzado una aplicación de muestra que le permite comparar el rendimiento de cinco bibliotecas: Fresco, Picasso, UIL, Glide y Volley Image Loader, una al lado de la otra. Puede obtenerlo en nuestro repositorio de GitHub .

También debo señalar que Fresco está disponible en Maven Central, como com.facebook.fresco:fresco.

Fresco ofrece características que Picasso, UIL y Glide aún no tienen:

  1. Las imágenes no se almacenan en el montón de Java, sino en el montón de ashmem. Los almacenamientos intermedios de bytes también se almacenan en el montón nativo. Esto deja mucha más memoria disponible para que las aplicaciones lo usen. Reduce el riesgo de OutOfMemoryErrors. También reduce la cantidad de aplicaciones de recolección de basura que tienen que hacer, lo que lleva a un mejor rendimiento.
  2. Las imágenes JPEG progresivas se pueden transmitir, al igual que en un navegador web.
  3. Las imágenes se pueden recortar en cualquier punto, no solo en el centro.
  4. Las imágenes JPEG se pueden cambiar de tamaño de forma nativa. Esto evita el problema de OOM al intentar reducir el tamaño de una imagen.

Hay muchos otros ( consulte nuestra documentación ), pero estos son los más importantes.

Tyronen
fuente
1
Gracias, ¿puede adjuntar el resultado de "Hemos lanzado una aplicación de muestra que le permite comparar el rendimiento de cinco bibliotecas" en formato tabular con su respuesta?
mmlooloo
1
Fresco tiene algunas características más que las otras, pero también es mucho más grande ...
ligi
44
agregaron una 's' al final del enlace. github.com/facebook/fresco/tree/master/samples
JR Tan
@tyronen estoy interesado en Fresco. ¿Permite cargar imágenes locales desde la red? Gracias
GmloMalo
1
@wedi sí lo es.
tyronen
131

Eso sí, es una pregunta muy basada en la opinión, así que dejé de hacer fiordos e hice una tabla rápida

ingrese la descripción de la imagen aquí

Ahora, la comparación de la biblioteca es difícil porque en muchos parámetros, los cuatro hacen lo mismo, excepto posiblemente para Fresco porque hay un montón de nuevas optimizaciones de nivel de memoria, así que avíseme si ciertos parámetros le gustaría ver una comparación basada en mi experiencia.

Habiendo usado menos Fresco, la respuesta podría evolucionar a medida que continúo usándola y la entiendo para las hazañas actuales. El used personallyes haber utilizado el al menos biblioteca una vez en una aplicación completado.

* Nota: Fresco ahora admite animaciones GIF y WebP

Vrashabh Irde
fuente
1
Tengo curiosidad por las calificaciones más bajas de 'Personalización', 'Uso de imágenes de red' y 'Facilidad de uso' para Fresco. ¿Cuál es la base de estas calificaciones?
tyronen
1
Principalmente primer uso, usará Fresco un poco más para entender, esta respuesta podría evolucionar :)
Vrashabh Irde
1
@Slartibartfast ¿Tuviste la oportunidad de probar Fresco y la última versión de Glide 3.0? ¿Todavía los calificarías igual?
Shobhit Puri
2
Te perdiste un aspecto importante. ... el tamaño de la biblioteca. Esta es la razón principal por la que Picasso y UImageLoader no admiten GIF. Las licencias también serían buenas para incluir.
Codeversed
3
@AhamadullahSaikat Los que usó personalmente.
Pierre
112

Fuentes de fresco | fuera del sitio
(-)
- Tamaño enorme de la biblioteca
- Sin devolución de llamada con vista, parámetros de mapa de bits
- SimpleDraweeView no admite wrap_content
- Tamaño enorme de caché
(+)
- Cargador de imágenes bastante rápido (para imágenes pequeñas y medianas)
- Mucha funcionalidad (transmisión, herramientas de dibujo, administración de memoria, etc.)
- Posibilidad de configurar directamente en xml (por ejemplo, esquinas redondeadas)
- Soporte de GIF
- Soporte de WebP y Webp animado


Fuentes de Picasso | fuera del sitio
(-)
- Carga lenta de imágenes grandes de Internet en ListView
(+)
- Tamaño
pequeño de la biblioteca - Tamaño pequeño de caché
- Uso simple
- La interfaz de usuario no se congela
- Soporte de WebP


Fuentes de deslizamiento

(-)
- Tamaño grande de la biblioteca
(+)
- Tamaño de caché de hojalata
- Uso simple
- Soporte de GIF
- Soporte de WebP
- Carga rápida de imágenes grandes de Internet en ListView
- La interfaz de usuario no se congela
- BitmapPool para reutilizar memoria y por lo tanto, eventos menores de GC


Fuentes de Universal Image Loader

(-)
- Funcionalidad limitada (procesamiento de imagen limitado)
- El soporte del proyecto se ha detenido desde el 27.11.2015
(+)
- Tamaño de la biblioteca de hojalata
- Uso simple


Probado por mí en SGS2 (Android 4.1) (WiFi 8.43 Mbps)
Versiones oficiales para Java, ¡no para Xamarin!
19 de octubre de 2015

Prefiero usar Glide.
Lee más aquí .
Cómo escribir caché en almacenamiento externo (tarjeta SD) con Glide.

Volodymyr Kulyk
fuente
44
El "cargador de imágenes bastante rápido" parece contradecir el "congelamiento de aplicaciones" para Fresco.
TWiStErRob
2
Tengo Picasso en un proyecto de Xamarin y el uso de la memoria fue ENORME (usado para cargar imágenes en la vista de reciclador). OutOfMemorytodo el tiempo ...
Vahid Amiri
@ VSG24 hay 2 opciones: 1) lo está usando mal. 2) La versión de Android (Java) de la lib no es la misma para Xamarain
Volodymyr Kulyk
1
Como Glide negativo (-) he experimentado muchos parpadeos. Las imágenes cargadas se "restablecerían" de la nada
FRR
1
@RJFares Probé la última versión recientemente, puedes usarla ImagePipelineConfig.setDownsampleEnabled(true)para evitar que se congele. Pero a veces se salta fotogramas de un GIF. Si solo muestra imágenes estáticas en su aplicación, creo que puede intentarlo.
Kimi Chiu
109

Estas respuestas son totalmente mi opinión

Respuestas

  1. Picasso es un cargador de imágenes fácil de usar, lo mismo ocurre con Imageloader. Fresco utiliza un enfoque diferente para la carga de imágenes, aún no lo he usado, pero me parece más una solución para obtener imágenes de la red y almacenarlas en caché y luego mostrarlas. luego al revés, como Picasso / Imageloader / Glide, que para mí son más Mostrar imagen en pantalla que también obtiene imágenes de la red y las almacena en caché.

  2. Glide intenta ser algo intercambiable con Picasso. Creo que cuando se crearon, la mentalidad de Picasso era seguir las especificaciones HTTP y dejar que el servidor decidiera las políticas de almacenamiento en caché y la memoria caché de tamaño completo y redimensionar según demanda. Glide es lo mismo con seguir la especificación HTTP, pero trata de tener una huella de memoria más pequeña haciendo algunas suposiciones diferentes, como almacenar en caché las imágenes redimensionadas en lugar de las imágenes de tamaño completo, y mostrar imágenes con RGB_565 en lugar de RGB_8888. Ambas bibliotecas ofrecen una personalización completa de la configuración predeterminada.

  3. Es difícil decir qué biblioteca es la mejor para usar. Picasso, Glide y Imageloader son bibliotecas bien respetadas y probadas, todas fáciles de usar con la configuración predeterminada. Tanto Picasso como Glide requieren solo 1 línea de código para cargar una imagen y tienen un marcador de posición y una imagen de error. Personalizar el comportamiento tampoco requiere tanto trabajo. Lo mismo ocurre con Imageloader, que también es una biblioteca más antigua que Picasso y Glide, sin embargo, no lo he usado, así que no puedo decir mucho sobre el rendimiento / uso de memoria / personalizaciones, pero mirar el archivo Léame en github me da la impresión de que también es relativamente fácil de usar y configurar. Entonces, al elegir cualquiera de estas 3 bibliotecas, no puede tomar una decisión incorrecta, es más una cuestión de gusto personal.Al igual que el SDK de Facebook todavía no se lanzó oficialmente en mavenCentral, no he usado Facebook SDK desde septiembre de 2014 y parece que pusieron la primera versión en línea en mavenCentral en octubre de 2014. Por lo tanto, tomará algún tiempo antes de que podamos obtener cualquier Buena opinión al respecto.

  4. entre las 3 bibliotecas de grandes nombres, creo que no hay diferencias significativas. El único que se destaca es el fresco, pero eso se debe a que tiene un enfoque diferente y es nuevo y no está probado en batalla.

Égida
fuente
3
Minor nit: parece que el SDK de Facebook ha estado oficialmente disponible como AAR en Maven Central por un tiempo. developers.facebook.com/docs/android/…
orip
1
Gracias por la corrección, ha pasado un tiempo desde que usé el SDK de Facebook, así que no lo había comprobado. Aun así, les tomó demasiado tiempo ponerse allí.
Aegis
1
Un año después de leer esto, todavía me pregunto si debería usar Frescoe y todavía no puedo ver por qué debería hacerlo. Mientras Glide y Picasso trabajan fuera de la caja, Frescoe solo necesita que hagas tantas cosas que no parece que valga la pena y el tamaño ...
frostymarvelous
Quiero señalar que el fresco tiene problemas de memoria: github.com/facebook/react-native/issues/8711
Fabian Zeindl
También he experimentado los problemas de memoria con el fresco, desafortunadamente parece que tiene que ser fresco o deslizarse si necesita soporte de gif animado. También FWIW aquí hay un enlace a algunos detalles de comparación adicionales.
Nick
63

Ni Glide ni Picasso son perfectos. La forma en que Glide carga una imagen en la memoria y realiza el almacenamiento en caché es mejor que Picasso, que permite que una imagen se cargue mucho más rápido. Además, también ayuda a evitar que una aplicación sea popular OutOfMemoryError. La carga de animación GIF es una característica de asesinato proporcionada por Glide. De todos modos, Picasso decodifica una imagen con mejor calidad que Glide.

¿Cuál prefiero? Aunque uso Picasso durante tanto tiempo, debo admitir que ahora prefiero Glide. Pero le recomendaría que cambie el formato de mapa de bits a ARGB_8888 y deje que Glide almacene en caché la imagen a tamaño completo y cambie el tamaño de una primero. ¡El resto haría tu trabajo genial!

  • El recuento de métodos de Picasso y Glide está en 840 y 2678 respectivamente.
  • El tamaño de Picasso (v2.5.1) es de alrededor de 118 KB, mientras que el de Glide (v3.5.2) es de alrededor de 430 KB.
  • Glide crea imágenes en caché por tamaño, mientras que Picasso guarda la imagen completa y la procesa, por lo que al cargarla se muestra más rápido con Glide pero usa más memoria.
  • Glide usa menos memoria por defecto con RGB_565.

+1 para Picasso Palette Helper .

Hay un post que habla mucho de Picasso vs Glide puesto

Daniel Gomez Rico
fuente
Excelente articulo. Me estoy cambiando a Glide ahora. Incluso mejor que Picasso no es lo que tenía en mente. :)
Sufian
1
Un problema que veo es que Glide requiere API 10. Es un pequeño problema ya que no puedo dejar de admitir API 9 desde mi aplicación. De lo contrario, seguramente una mejor manera de hacerlo.
Sufian
¿Puedes explicar por qué estás usando la API 9? solo curiosidad ...
Daniel Gomez Rico
A menos que me falte algo, es para admitir todas las versiones de Gingerbread.
Sufian
1
Creo que es un poco subjetivo. Pero es mejor admitir tantos dispositivos / versiones como sea posible. ¿No? :)
Sufian
18

Quiero compartir con ustedes un punto de referencia que he hecho entre Picasso, Universal Image Loader y Glide : https://bit.ly/1kQs3QN

Fresco estaba fuera del punto de referencia porque para el proyecto en el que estaba ejecutando la prueba, no queríamos refactorizar nuestros diseños (debido a la vista Drawee).

Lo que recomiendo es Universal Image Loader debido a su personalización, consumo de memoria y equilibrio entre tamaño y métodos.

Si tienes un proyecto pequeño, iría por Glide (o probaría Fresco).

shollmann
fuente