使用ImageLoader 报错ImageLoader Image can't be decoded

在使用ImageLoader 加载图片的时候,偶尔出现错误如下:

ImageLoader Image can't be decoded [file:///..................’_480x800]

突然遇到,一脸懵逼;
这个错误,不同的手机,还不一定能复现,进过一番查找,原因:

/**
     * 在Application中初始化参数
     *
     * @param context
     */
    public static void initImageLoader(Context context) {
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(480, 800) // 即保存的每个缓存文件的最大长宽
                //.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) //设置缓存的详细信息,最好不要设置这个
        …………此次省略…………

发现在初始化的时候设置了memoryCacheExtraOptions 参数 480, 800,数字刚好吻合,再看调用的时候设置了DisplayImageOptions,具体代码如下:

public static DisplayImageOptions getOptionsHeader() {
        return new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .showImageForEmptyUri(R.mipmap.ic_launcher)//为空的时候
                .showImageOnFail(R.mipmap.ic_launcher)//错误的时候
                .showImageOnLoading(R.mipmap.ic_launcher)//载入的时候
                .build();
    }

此次开启了内存缓存和磁盘缓存,当要加载的图片的尺寸参数大于初始化的参数就会出现如题错误,解决方式:
1、简单直接:把cacheInMemory、cacheOnDisk都设置为false
2、改大初始化的参数
3、显示的时候强制压缩图片尺寸小于初始化,再加载显示

    原文作者:wasdzy111
    原文地址: https://www.jianshu.com/p/41ce21193845
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞