我试图在Picasso 2.5.2
的帮助下从gridview中的摄像机路径加载图像存储/模拟/ 0 / DCIM /相机/ IMG_20150822_133220.jpg 这是路径。
此外,我在毕加索的Github回购中尝试了解决问题的解决方案。但它并没有解决我的问题。
我尝试使用毕加索的转换,但图像没有从相机路径加载。
我试过这个
File imageFile = new File(data.path);
Picasso.with(mContext)
.load(imageFile)
.placeholder(R.drawable.default_error)
.error(R.drawable.default_error)
.resize(mItemSize, mItemSize)
.centerCrop()
.into(image);
答案 0 :(得分:0)
您必须将网址传递到load()
方法。
File imageFile = new File(data.path);
try{
String url = imageFile.toURI().toURL().toString();
Picasso.with(mContext)
.load(url)
.placeholder(R.drawable.default_error)
.error(R.drawable.default_error)
.resize(mItemSize, mItemSize)
.centerCrop()
.into(image);
}catch (MalformedURLException exeption){
exeption.printStackTrace();
}
答案 1 :(得分:0)
请勿使用硬编码路径访问SD卡内容 - 它们并非在设备上通用。
使用.getExternalStoragePublicDirectory()
和正确的双参数File
构造函数:
File f = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),
"Camera/IMG_20150822_133220.jpg");
Picasso.with(mContext).load(f)./* ..;
UPD 实际上,除此之外,他们看起来有an open bug看起来很相关,有人说他们使用绝对路径解决了这个问题,所以试试
Picasso.with(context).load(new File(data.path).getAbsolutePath())...
答案 2 :(得分:0)
我现在遇到了类似的问题,这就是我解决它的方法。我正在尝试截取手机屏幕的截图,然后将其保存为此文件路径中的jpg文件:
filepath: /data/data/com.example.simon.myapp/app_report/report.jpg
然而,毕加索根本没有加载它 - 它只是给我一个空白的屏幕。
然后当我拍摄截图时,我决定从文件名中删除.jpg,以便文件路径类似于:
filepath: /data/data/com.example.simon.myapp/app_report/report
然后,我使用以下代码访问并显示我的屏幕截图,没有其他问题。
ContextWrapper cw = new ContextWrapper(context);
File directory = cw.getDir("report", Context.MODE_PRIVATE);
file = new File(directory, "/report");
Log.e("filepath", file.getPath());
Picasso.with(context).load(file).memoryPolicy(MemoryPolicy.NO_CACHE).into(screenshot);
我知道您需要在未来的某个阶段获取jpg文件扩展名,因此如果您需要获取“report.jpg”,只需使用此方法重命名该文件:
android, How to rename a file?
private boolean rename(File from, File to) {
return from.getParentFile().exists() && from.exists() && from.renameTo(to);
}