毕加索从文件系统加载图像

时间:2014-05-15 14:27:54

标签: android picasso

我可以使用Picasso库从文件系统加载图像吗?

我正在使用startActivityForResult让用户从他的图库中选择一张照片,然后想要显示所选图像。

我已经有了工作代码来获取图像文件系统Uri,但无法使Picasso.load()方法起作用。

7 个答案:

答案 0 :(得分:140)

当然可以。它实际上很直接:

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

File f = new File(uri)

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

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

作品

答案 1 :(得分:26)

是的,你可以。

尝试:

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

修改

您也可以拨打.load(YOUR_URI)

答案 2 :(得分:22)

查看源代码我还发现您可以从文件系统加载图像,并在图像路径中添加file:字符串前缀。例如:

file:path/to/your/image

此外,使用startActivityForResult时,您将得到如下内容:

Uri imageContent = data.getData();

然后,您可以直接致电Picasso.with(getContext()).load(imageContent.toString).into(imageView);,而无需创建Cursor并查询图片路径。

答案 3 :(得分:9)

试试这个:

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

它对我来说很完美。

答案 4 :(得分:6)

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

答案 5 :(得分:2)

基本上我们需要三件事,Contextimage´s pathImageView容器

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

但我们可以使用更多选项:

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

等...

更多信息: http://square.github.io/picasso/

答案 6 :(得分:1)

如果有人试图用Kotlin做到这一点,那就在这里...

//变量

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

//打开画廊以选择图片

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

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

//下一个

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()
            }
        }
    }

这就是您所需要的。