¿Por qué usar la biblioteca de Android Picasso para descargar imágenes?

¿Por qué debería descargar las imágenes a través de la biblioteca de Picasso en lugar de simplemente usar este código?

private Bitmap DownloadImage(String URL) { Bitmap bitmap = null; InputStream in = null; try { in = OpenHttpGETConnection(URL); bitmap = BitmapFactory.decodeStream(in); in.close(); } catch (Exception e) { Log.d("DownloadImage", e.getLocalizedMessage()); } return bitmap; } 

Otra pregunta:

¿Picasso descarga la imagen en la interfaz de usuario o por hilo de fondo?

Solo para el registro de cualquier persona nueva en Android o tal vez moviéndose a Android desde iOS ……….

Hasta que algo cambie drásticamente, tienes que usar Picasso. No es una broma.

Honestamente, es así de simple. Las ventajas son increíbles

Es así de fácil de usar:

 Picasso. with(State.mainContext). load(parseImageFile.getUrl()). into(null); 

Usted muy simplemente:

debe hacer el almacenamiento en caché y el enhebrado, con manejo de imágenes en Android.

Es así de simple. A menos que quieras escribir eso desde cero , simplemente debes usar Picasso.

Tenga en cuenta que ParseImageFile esencialmente no funciona, es completamente inútil sobre el almacenamiento en caché, etc. Hay alternativas admirables para Picasso (como Universal Image Loader, compruébalo), pero ninguna funciona tan bien como Picasso, por ahora 2014.

Tenga en cuenta si se mueve a los súper avanzados … Lo único mejor que Picasso es hacer el cambio a Volley. pero eso es un gran salto.

Tenga en cuenta que el desplazamiento de ListView en Android es mucho, mucho más problemático que el desplazamiento de manejo de tablas en iOS. Se podría decir que Android + Picasso es MÁS COMO LA situación en iOS, donde todo el trabajo ya está hecho para desplazarse por vistas de tabla grandes con imágenes.

Por hoy, Picasso es, simplemente, una parte central de cualquier aplicación de Android. Gracias a Dios, es una línea de código: sin configuración, nada.

Nuevamente, lo único “mejor que” Picasso es si te mudas a Volley.

Por cierto, aquí hay un excelente artículo largo sobre Volley v. Picasso, si es necesario …

http://www.bignerdranch.com/blog/solving-the-android-image-loading-problem-volley-vs-picasso/

Picasso descarga la imagen en otro hilo y lo hace por usted:

  • el marcador de posición, mientras tanto, la imagen sigue descargando
  • cambio de tamaño
  • recorte / centrado / escala
  • almacenamiento en caché (no tiene que descargar la imagen cada vez)
  • incluso “desvanece la imagen”, que es popular / normal ahora

Es extremadamente simple, aquí hay un ejemplo:

  Picasso.with(context) .load(url) .placeholder(R.drawable.placeholder) .resize(imgWidth, imgHeight) .centerCrop() .into(image); 

Siempre utilicé la Biblioteca Picasso para las imágenes.
Es muy útil para administrar imágenes y no preocuparse por el problema de memoria.
Cuando descargo imágenes del servidor o json, utilizo

  Picasso.with(context).load("image url").fetch(); 

Y guardo esa url de imagen en la base de datos o en algún otro lugar.
Ahora podemos usar esa imagen en cualquier lugar (fuera de línea también).

 Picasso.with(context).load("image url").into(ImageView); 
 Picasso.with(this).load("http://sofes.miximages.com/android/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView, new Callback() {@ Override public void onSuccess() {}@ Override public void onError() {} }); 

Debe descargar las imágenes a través de la biblioteca de Picasso por las siguientes razones:

  1. Puede poner un marcador de posición en caso de que la imagen tarde un tiempo en cargarse.
  2. fit() : a veces algunas imágenes no se cargan en la vista de imagen debido al tamaño. Este método te ayudará a cargar imágenes grandes.
  3. onSuccess() : puede realizar alguna acción cuando una imagen se carga con éxito.
  4. onError() : puede realizar alguna acción cuando hay un problema al cargar una imagen.

Debe utilizar una biblioteca de cargador de imágenes como Picasso, Volley o Universal Image Loader porque hacen lo siguiente: el código no funciona:

  • Eficiente red multiproceso (en hilos de fondo, por supuesto)
  • Combinando múltiples solicitudes idénticas en una sola llamada de red
  • Cancelación de solicitudes pendientes, especialmente durante el reciclaje de elementos ListView
  • Almacenamiento en memoria caché de disco y memoria con varias políticas de caducidad
  • Las imágenes reducen la resolución al tamaño de la vista de destino para mejorar el rendimiento y reducir el uso de memoria
  • Actualización de UI por lotes para mejorar la capacidad de respuesta de la interfaz de usuario (al menos para Volley y Picasso).

Por cierto, nunca debes realizar solicitudes de red en el hilo de UI y, dado que HoneyComb, Android no te permite hacerlo.

Sé que Picasso es una biblioteca increíble para administrar imágenes en ListView y GridView, pero entre todas las opciones, incluido Picasso, utilizo GLIDE …

Realmente gestiona la descarga y el almacenamiento en caché perfectamente … (no pude hacer que Picasso usara imágenes almacenadas en caché después de completar la descarga, pero Glide lo hizo como si fuera un pedazo de pastel).

Aquí está la página de Github de GLIDE:

https://github.com/bumptech/glide

Saludos….

Si usará el método central para cargar imágenes desde la red, tomaría una mayor cantidad de código. Pero si usaremos una biblioteca de terceros como picasso, lograremos nuestro objective en pocas líneas de código.
Y la Biblioteca Picasso es la mejor y más simple que he encontrado hasta ahora. Solo necesitamos escribir lo siguiente para cargar una imagen de internet usando picasso.

 Picasso.with(this) .load("YOUR IMAGE URL HERE") .placeholder(Your Drawable Resource) //this is optional the image to display while the url image is downloading .error(Your Drawable Resource) //this is also optional if some error has occurred in downloading the image this image would be displayed .into(imageView); 

Pero si no usaremos la biblioteca de picasso o cualquier otra biblioteca, tendremos que hacerlo usando AsyncTask que requerirá más líneas de código.

Fuente: Picasso Android Tutorial

Agregue la siguiente dependencia en su build.gradle(Module:app)

 compile 'com.github.bumptech.glide:glide:3.6.1' 

Picasso maneja automáticamente todos los inconvenientes asociados con la descarga de imágenes, como el almacenamiento en caché de la imagen descargada, la búsqueda de caché, la cancelación de solicitudes existentes, la realización de transormaciones de imágenes y la deencoding, cambio de tamaño y recorte de imágenes.

Y le permite personalizarlo, puede configurar memoria para caché, agregar transformador de solicitud utilizado para agregar información global a cada solicitud, agregar configuración de bitmap para manejar imágenes de deencoding para formato no cubierto por configuración predeterminada de bitmap.

Le permite especificar políticas de memoria y políticas de red que hacen que sea usar caché o descargar de la red. Le permite agregar marcadores de posición e imágenes de error para usar durante la descarga y en caso de error en la descarga, respectivamente.

Picasso descarga imágenes de forma asincrónica en subprocesos de trabajo.

Aquí está el código que usa la última versión 2.71828 de Picasso para cargar una imagen en ImageView en el hilo de trabajo.

 Picasso.get().load(productImageUrl).into(imageView); 

A continuación, el código cambia el tamaño y recorta la imagen.

Consulte http://www.zoftino.com/android-picasso-image-downloading-and-caching-library-tutorial para obtener más información. Picasso.get (). Load (productImageUrl) .resize (400,400) .centerCrop (). Into (imageView);