Android glide加载本地图片遇到的问题
程序员文章站
2022-05-28 12:22:32
...
问题:加载本地图片一直加载不出来,也不知道是哪里出现的问题,以为是图片命名的方式,试了也没用,后面又看了glide的源码发现glide加载本地图片也是用的那样的方法,后面问了下上家同事,郭佬,才发现一开始的问题便是图片路径的问题。
步骤:
首先检查图片路径(不要写绝对路径!!!):
我是将一个ImageView通过模糊度生成一个图片保存到SD卡中,然后再在其他的地方进行调用展示
(一):图片生成并保存
public static void viewSaveToImage(Context context, View view) {
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
view.setDrawingCacheBackgroundColor(Color.WHITE);
// 把一个View转换成图片
Bitmap cachebmp = loadBitmapFromView(view);
FileOutputStream fos;
String imagePath = "";
try {
// 判断手机设备是否有SD卡
boolean isHasSDCard = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if (isHasSDCard) {
// SD卡根目录
File sdRoot = Environment.getExternalStorageDirectory();
String fileName = getSDPath() +"/" + Calendar.getInstance().getTimeInMillis()+".jpg";//以name存在目录中
File file = new File(fileName);
// File file = new File(sdRoot, "wuaisport/" + Calendar.getInstance().getTimeInMillis() + ".jpg");
Log.e(TAG, "viewSaveToImage filePath : " + file.getPath());
SPUtils.getInstance().put(Constants.SKIN_CONFIG_PIC_PATH, file.getAbsolutePath());
//保存图片后发送广播通知更新数据库
Uri uri = Uri.fromFile(file);
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
fos = new FileOutputStream(file);
imagePath = file.getAbsolutePath();
} else
throw new Exception("创建文件失败!");
cachebmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
LogUtil.e("imagePath=" + imagePath);
view.destroyDrawingCache();
}
获取SD卡的路径是关键:
public static String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED);//判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();//获取跟目录
}
return sdDir.toString();
}
生成的图片路径:imagePath=/storage/emulated/0/1556246754134.jpg
(二)在其他地方进行展示(使用glide):
Glide.with(context).load(Uri.fromFile(new File(absPicPath))).into(ivCustomeBg);
glide加载本地SD卡图片并进行显示。
推荐阅读
-
浅谈Android获取ImageView上的图片,和一个有可能遇到的问题
-
Android图片加载框架之Glide 4的用法介绍
-
Android图片加载框架解析之Glide的自定义模块功能讲解
-
Android适配利用webview加载后图片显示过大的问题解决
-
【WPF】大量Canvas转换为本地图片遇到的问题
-
Android使用Glide加载https链接的图片不显示的原因
-
Android将Glide动态加载不同大小的图片切圆角与圆形的方法
-
webView加载html图片遇到的问题解决
-
Android中使用file.createNewFile()无法创建文件的问题(例如保存拍照的图片到本地)
-
Android图片加载框架Glide的基本用法介绍