Pourquoi devrais-je télécharger les images via la bibliothèque Picasso au lieu d'utiliser simplement ce code:
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;
}
Une autre question:
Picasso télécharge-t-il l'image dans l'interface utilisateur ou par un fil de fond?
Pour mémoire, si vous êtes un nouvel utilisateur de Android ou passez peut-être à Android à partir de iOS ..........
Honnêtement, c'est aussi simple que cela. Les avantages sont incroyables.
C'est aussi simple à utiliser:
Picasso.
with(State.mainContext).
load(parseImageFile.getUrl()).
into(null);
Vous très simplement:
C'est si simple. Sauf si vous voulez écrire cela à partir de zéro , vous devez simplement utiliser Picasso.
Notez que ParseImageFile ne fonctionne pas - il est absolument inutile de mettre en cache, etc. Il existe d’excellentes alternatives à Picasso (telles que Universal Image Loader, à découvrir), mais aucune ne fonctionne aussi bien que Picasso, pour l’instant 2014.
Remarque si vous passez à des articles super-avancés ... La seule chose est meilleure que Picasso, est de passer à Volley. mais c'est un énorme saut.
Notez que le défilement ListView sur Android est beaucoup plus problématique que le défilement de la table sur iOS. Vous pourriez dire, Android + Picasso est plus semblable à la situation sur iOS, où tout le travail est déjà fait pour faire défiler des vues de tableau volumineuses avec des images.
Pour aujourd’hui, Picasso est - tout simplement - une partie centrale de toute Android). Heureusement, c’est une ligne de code - pas d’installation, rien.
Encore une fois, la seule chose "meilleure que" Picasso est si vous passez à Volley.
BTW voici un excellent long article sur Volley v. Picasso, si vous en avez besoin ...
http://www.bignerdranch.com/blog/solving-the-Android-image-loading-problem-volley-vs-picasso/
Picasso télécharge l'image dans un autre fil et il gère pour vous:
C'est extrêmement simple, voici un exemple:
Picasso.with(context)
.load(url)
.placeholder(R.drawable.placeholder)
.resize(imgWidth, imgHeight)
.centerCrop()
.into(image);
J'ai toujours utilisé Bibliothèque Picasso pour les images.
C'est très utile pour gérer les images et ne vous inquiétez pas du problème de mémoire.
Quand je télécharge des images depuis un serveur ou un json, j’utilisais
Picasso.with(context).load("image url").fetch();
Et je stocke cette image URL à la base de données ou quelque part.
Nous pouvons maintenant utiliser cette image n'importe où (hors ligne également).
Picasso.with(context).load("image url").into(ImageView);
Picasso.with(this).load("http://webneel.com/wallpaper/sites/default/files/images/04-2013/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView,
new Callback() {@
Override
public void onSuccess() {}@
Override
public void onError() {}
});
Vous devez télécharger les images via la bibliothèque Picasso pour les raisons suivantes:
fit()
- parfois, certaines images ne se chargent pas en mode d'affichage en raison de la taille. Cette méthode vous aidera à charger de grandes images.onSuccess()
- vous pouvez effectuer certaines actions lorsqu'une image est chargée avec succès.onError()
- vous pouvez effectuer certaines actions en cas de problème de chargement d'une image.Je sais que Picasso est une bibliothèque géniale pour la gestion des images dans ListView et GridView, mais parmi toutes les options, y compris Picasso, j'utilise GLIDE ...
Il gère vraiment le téléchargement et la mise en cache parfaitement ... (je ne pouvais pas amener Picasso à utiliser les images en cache une fois le téléchargement terminé, mais Glide l’a fait comme un morceau de gâteau).
Voici la page Github de GLIDE:
https://github.com/bumptech/glide
Cordialement....
Vous devez utiliser une bibliothèque d'Image Loader telle que Picasso, Volley ou Universal Image Loader, car elles font les choses suivantes que votre code ne fait pas:
En passant, vous ne devez jamais effectuer de requêtes réseau sur le thread d'interface utilisateur et depuis HoneyComb, Android ne vous le permet pas.
Si vous utilisiez la méthode principale de chargement d'image à partir d'un réseau, cela nécessiterait une plus grande quantité de code. Mais si nous utilisons une bibliothèque tierce telle que picasso, nous atteindrons notre objectif en quelques lignes de code.
Et la bibliothèque Picasso est la meilleure et la plus simple que j'ai trouvée jusqu'à présent. Il suffit d’écrire ce qui suit pour charger une image depuis Internet en utilisant 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);
Mais si nous n'utilisons pas la bibliothèque picasso ou une autre bibliothèque, nous aurons peut-être besoin de le faire en utilisant AsyncTask qui nécessitera plus de lignes de code.
Source: Picasso Android Didacticiel
S'il vous plaît ajouter la dépendance suivante dans votre build.gradle(Module:app)
compile 'com.github.bumptech.glide:glide:3.6.1'
Picasso gère automatiquement tous les pièges associés au téléchargement d'images, tels que la mise en cache de l'image téléchargée, la recherche de mémoire cache, l'annulation d'une demande existante, l'exécution de transormations d'image et le décodage, le redimensionnement et le recadrage des images.
Et cela vous permet de le personnaliser, vous pouvez configurer la mémoire pour le cache, ajouter un transformateur de requête utilisé pour ajouter des informations globales à chaque requête, ajouter une configuration bitmap pour gérer le décodage d'images au format non couvert par la configuration bitmap par défaut.
Il vous permet de spécifier une politique de mémoire et une stratégie de réseau, ce qui permet d'utiliser le cache ou de télécharger à partir du réseau. Il vous permet d'ajouter des images de marque de réservation et d'erreur à utiliser lors du téléchargement et en cas d'erreur lors du téléchargement.
Picasso télécharge les images de manière asynchrone sur les threads de travail.
Voici le code utilisant la dernière version 2.71828 de Picasso pour charger une image dans ImageView sur un thread de travail.
Picasso.get().load(productImageUrl).into(imageView);
Le code ci-dessous redimensionne et recadre l'image.
Voir http://www.zoftino.com/Android-picasso-image-downloading-and-caching-library-tutorial pour plus d'informations. Picasso.get (). Load (productImageUrl) .resize (400 400) .centerCrop (). Into (imageView);