我有一个Activity
,我在其中下载了一个图像压缩文件,然后在getFilesDir()
中解压缩。路径是这样的:
/data/user/0/packagename/files/files/example.png
但是当我尝试加载这些图像时,它们没有显示。 我正在使用此代码获取路径并加载图像:
String loc = getFilesDir().getPath() + "/" + Config.IMAGES_LOCATION +"/";
String imageloc = loc + model.getThumbnail();
Glide.with(ActivityImageGallery.this).load(imageloc).into(image);
imageloc路径与保存位置相同,从路径创建文件时,它显示它将存在。
我尝试在路径前使用file://
,但这也不起作用。 <{1}} en WRITE_EXTERNAL
权限被提出并被授予。
答案 0 :(得分:10)
这适用于我,制作文件实例并将要加载的文件传递给ImageView
Glide.with(context)
.load(new File(fileUri.getPath())) // Uri of the picture
.into(profileAvatar);
确保您已添加
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
您还可以使用RequestListener
在发生故障时跟踪错误
new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
答案 1 :(得分:1)
您是否尝试使用此
使用加载滑音侦听器<强> 1.Debug: - 强>
https://stackoverflow.com/a/42067675/5492047
Glide.with(getActivity())
.load(args.getString(IMAGE_TO_SHOW))
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(imageFrame);
并检查异常?
2.再次调试。
您可以使用任何文件资源管理器应用程序并转到文件加载的确切位置然后打开文件吗?
<强> 3.Path 强>
路径中真的是/ files / files /吗?
4.Extension 你能从文件路径中删除.png并加载并检查吗?
<强> 5.Tutorial 强>
这里有一个很棒的教程https://futurestud.io/tutorials/glide-getting-started。
答案 2 :(得分:0)
试试这个
File c = new File(Environment.getExternalStorageDirectory() + "/data/user/0/packagename/files/files/example.png");
Glide.with(MainActivity.this).load(c).error(R.drawable.empty_pic).placeholder(R.drawable.empty_pic).into(image2);
或试试这个
Glide.with(getActivity()).load(new File(" your path").toString())
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Log.e("xmx1","Error "+e.toString());
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
Log.e("xmx1","no Error ");
return false;
}
})
.into(ivx);
答案 3 :(得分:0)
首先捕获图像路径,要么是从相机捕获图像,要么是从图库中选取图像(我假设您已经具有读写权限)。然后试试这个
Glide.with(context).load(new File(imagePath)).dontAnimate().error(R.drawable.errorImage).placeholder(R.drawable.placeholderImage).into(imageView);
使用.dontAnimate()
,因为在某些情况下,第一次加载时可能无法加载或显示图像(或占用额外时间)。
希望它会有所帮助。
答案 4 :(得分:0)
您需要运行时权限才能使用内部存储。其次使用最新的滑动库 编译'com.github.bumptech.glide:glide:3.7.0' 格式为
Glide.with(context).load(image path).into(Imageview);