Question

Can I use Picasso library to load images from the filesystem?

I'm using startActivityForResult to let the user pick a photo from his gallery, and then want to show the selected image.

I already have working code to get the image filesystem Uri, but can't get the Picasso.load() method to work.

Was it helpful?

Solution

Of course you can. Its actually pretty straight forward:

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

or

File f = new File(uri);

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

also

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

works

OTHER TIPS

Yes you can.

Try:

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

EDIT

You can also call .load(YOUR_URI) instead as well.

Looking in the source code I also discover that you can load the image from filesystem adding file: string prefix to your image path. For example:

file:path/to/your/image

Also, when using startActivityForResult, you will get something like this:

Uri imageContent = data.getData();

Then, you can call Picasso.with(getContext()).load(imageContent.toString).into(imageView); directly without need to create a Cursor and querying for the image path.

Try this:

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

It work perfect for me.

> 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);

Basically we need three things, Context, image´s path and the ImageView Container

Old version of Picasso:

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

Newer version of Picasso:

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

but we can make use of more options:

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

etc...

more info : http://square.github.io/picasso/

If anyone trying to do this with Kotlin then here it is...

//variables

private lateinit var addImage: ImageView  // set the id of your ImageView
private lateinit var imageUri: Uri

//open gallery to select an image

val gallery = Intent()
        gallery.type = "image/*"
        gallery.action = Intent.ACTION_GET_CONTENT

        startActivityForResult(Intent.createChooser(gallery, "Select picture"), PICK_IMAGE)

//next

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == PICK_IMAGE && resultCode == RESULT_OK) {
            imageUri = data?.data!!
            try {

                Picasso.get()
                    .load(imageUri)
                    .into(addImage)

            } catch (e: Throwable) {
                e.printStackTrace()
            }
        }
    }

That's all you need.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top