3 votes

Picasso, chargement et redimensionnement des images

J'ai beaucoup d'images dans mon application, j'utilise resize et en personnalisant la largeur et la hauteur de nombreuses listes, je reçois du serveur des images de grande taille pour chacune d'entre elles. Est-ce une bonne idée d'utiliser resize ou dois-je récupérer des images plus petites sur le serveur, là où c'est nécessaire, et supprimer resize() à partir de l'appel à Picasso, cela augmentera-t-il les performances de l'application ? Ma principale question est de savoir si l'utilisation de resize dans votre application réduit les performances car il doit redimensionner chaque image dans votre application.

2voto

Enzokie Points 5630

Picasso ne fera que resize() l'image une seule fois parce qu'elle sera mise en cache (c'est-à-dire stockée dans la base de données du LruCache ), à moins que le cache n'ait atteint la limite maximale, votre cache supprimera une image afin de pouvoir en stocker de nouvelles. Un nouvel accès à l'image supprimée déclenchera un autre resize() mais pour les images qui sont encore dans le cache, Picasso n'aura pas besoin d'effectuer un appel. resize() .

Si vous avez un contrôle total sur votre serveur, il serait préférable de créer une API avec des paramètres de taille d'image personnalisables. Supposons que vous n'ayez besoin que d'une vignette, vous n'aurez qu'à indiquer la largeur et la hauteur de votre image plutôt que de télécharger une grande image qui ne présente aucun avantage pour les vignettes et qui vous permet d'économiser de la bande passante.

1voto

Ramesh Prajapati Points 238

Essayez ceci pour spécifier la hauteur et la largeur de l'image

Picasso.with(mContext)
             .load(uri).resize(100, 100).centerCrop()
             .placeholder(R.drawable.type_pic)
             .error(R.drawable.type_pic)
             .into(holder.icon);

1voto

Dinesh Balu Points 86

La fonction resize() de Picasso permet d'améliorer les performances de rendu,

Cependant, si la taille réelle du fichier est importante, le temps de téléchargement sera plus long que le temps de téléchargement de la taille réelle.

Utilisez donc des images redimensionnées à partir du serveur ou, si vous ne pouvez pas disposer d'images redimensionnées pour chaque résolution, utilisez les deux méthodes.

De cette façon, vous pouvez au moins réduire le temps de chargement à un temps considérable.

1voto

Angad Tiwari Points 388

@gurvinder, il semble y avoir beaucoup de scénarios concernant l'amélioration des performances.

Scénario 1 image haute résolution -> grande taille de l'image -> temps de chargement plus long

Solution - Vous pouvez réduire la résolution de l'image en fonction de la résolution maximale supportée par votre application.

Scénario 2 Quelle bibliothèque d'images ? Picasso, Glide, UniversalImageLoader ou Fresco ? Solution - Je vous suggère d'opter pour fresco, pour moi fresco est impressionnant. la mise en cache et les performances sont bien plus rapides que n'importe quel autre système.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X