欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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卡图片并进行显示。