使用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、显示的时候强制压缩图片尺寸小于初始化,再加载显示

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • UniversalImageLoader [TOC] 本章主要介绍UniversalImageLoader的主要实...
    反复横跳的龙套阅读 3,873评论 1 2
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,514评论 2 59
  • title: imageLoader解析date: 2017-09-02 19:00:47categories: ...
    小人物灌篮阅读 6,067评论 0 7
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 昨天带孩子去游乐场,孩子又一次提醒我关于成长最重要的法则:慢慢来,比较快。 那是一个充满蓝色海洋球的气垫游乐场,里...
    羽婷爱写作阅读 4,531评论 3 13

友情链接更多精彩内容