web-dev-qa-db-fra.com

Picasso Charger une image à partir d'un système de fichiers

Puis-je utiliser la bibliothèque Picasso pour charger des images à partir du système de fichiers?

J'utilise startActivityForResult pour permettre à l'utilisateur de choisir une photo dans sa galerie, puis de montrer l'image sélectionnée.

J'ai déjà du code de travail pour obtenir le système de fichiers image Uri, mais je ne parviens pas à faire fonctionner la méthode Picasso.load().

73
edrian

Bien sûr vous pouvez. C'est en fait assez simple:

File f = new File("path-to-file/file.png")

ou

File f = new File(uri)

Picasso.with(getActivity()).load(f).into(imageView);

aussi

Picasso.with(getActivity()).load(uri).into(imageView);

travaux

143
patrickf

Oui, vous pouvez.

Essayer:

Picasso.with(context).load(new File(YOUR_FILE_PATH)).into(imageView);

EDIT

Vous pouvez également appeler .load(YOUR_URI) à la place.

26
egfconnor

En regardant dans le code source, je découvre également que vous pouvez charger l'image à partir du système de fichiers en ajoutant le préfixe de chaîne file: À votre chemin d'image. Par exemple:

file:path/to/your/image

En outre, lorsque vous utilisez startActivityForResult, vous obtiendrez quelque chose comme ceci:

Uri imageContent = data.getData();

Ensuite, vous pouvez appeler Picasso.with(getContext()).load(imageContent.toString).into(imageView); directement sans avoir à créer un Cursor et à interroger le chemin de l'image.

22
edrian

Essaye ça:

Picasso.with(context)
.load("file://"+path) // Add this
.config(Bitmap.Config.RGB_565)
.fit().centerCrop()
.into(imageView);

Cela fonctionne parfaitement pour moi.

9
Awesome Code
> Picasso.get().load(R.drawable.landing_screen).into(imageView1);
> Picasso.get().load("file:///Android_asset/DvpvklR.png").into(imageView2);
> Picasso.get().load(new File(...)).into(imageView3);
6
Tarun Umath

Fondamentalement, nous avons besoin de trois choses, Context, image´s path et le conteneur ImageView

Picasso.with(context).load("/files/my_image.jpg").into(myImageView);

mais nous pouvons utiliser plus d'options:

  .resize(20, 20)
  .centerCrop()
  .placeholder(R.drawable.user_placeholder)
  .error(R.drawable.user_placeholder_error)

etc...

plus d'infos: http://square.github.io/picasso/

2
Jorgesys