我可以使用Picasso库从文件系统加载图像吗?
我startActivityForResult
用来让用户从他的画廊中挑选一张照片,然后想要显示所选的图像。
我已经有工作代码来获取图像文件系统Uri
,但是无法使该Picasso.load()
方法工作。
Answers:
当然可以。实际上非常简单:
File f = new File("path-to-file/file.png");
要么
File f = new File(uri);
Picasso.get().load(f).into(imageView);
也
Picasso.get().load(uri).into(imageView);
作品
Picasso.get().load(f).into(imageView);
或者 Picasso.get().load(uri).into(imageView);
或者 Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);
通过查看源代码,我还发现您可以从文件系统加载图像,并file:
在图像路径中添加字符串前缀。例如:
file:path/to/your/image
另外,在使用startActivityForResult时,您将获得如下内容:
Uri imageContent = data.getData();
然后,您可以Picasso.with(getContext()).load(imageContent.toString).into(imageView);
直接调用而无需创建Cursor
和查询图像路径。
file://
。您的Uri缺少第二个/
。
> 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);
Picasso.with()
不再被提供。
基本上,我们需要三件事Context
,image´s path
以及ImageView
容器
//Old version: Picasso.with(context).load("/files/my_image.jpg").into(myImageView);
Picasso.get().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/
如果有人试图用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()
}
}
}
这就是您所需要的。