从服务器通过FTP协议下载了需要使用的图片,Glide从主线程加载下载了的本地图片。
图片可以在服务器上正常打开,却无法在APP上通过ImgaeView加载出来,曾将同一张图片放在drawable目录下,直接通过R.drawable.....加载,图片却可以正常显示。
加载本地图片报错如下
 W/Glide: Load failed for /data/data/com.laoyao.normal.fchess/files/FCChess/67E45D2EC2AEDC1F940E18852175600E.png with size [1776x1776]
class com.bumptech.glide.load.engine.GlideException: Failed to load resource
Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, LOCAL
Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable}
Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable}
Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable}
Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, LOCAL
Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable}
Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable}
Cause (1 of 1): class java.io.IOException: java.lang.IllegalArgumentException
I/Glide: Root cause (1 of 1)
java.io.IOException: java.lang.IllegalArgumentException
at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:133)
at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24)
at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:45)
at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67)
at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
at com.bumptech.glide.load.engine.SourceGenerator.onDataReady(SourceGenerator.java:111)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:132)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:96)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:61)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
at com.bumptech.glide.load.engine.SourceGenerator.onDataReady(SourceGenerator.java:111)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:132)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:49)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:96)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:61)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
。后面还有好多
之前也遇到过这种问题,是在百度上下载图片然后经过Windows自带的画图软件修改之后,修改后的图片也是通过FTP从服务器下载到本地,无法加载出来,当我将裁剪后的图片更换成原图的时候,却一切运行正常。啊啊啊,要疯了,简直是个谜,求大佬解答。。

解决方案 »

  1.   

    遇到同样的问题,没找到原因,改用Picasso加载图片,能加载出来。
      

  2.   


        File file = new File(Environment.getExternalStorageDirectory(), "tp.png");
        Glide.with(this).load(file).into(imageView);
    这样不行?
      

  3.   

    不知道你的问题和我的一样不,我的是缓存的问题,加上这句话就正确了
    .signature(new StringSignature(UUID.randomUUID().toString())) // 重点在这行
      

  4.   

    改用Picasso加载图片
      

  5.   

    你可以把图片复制出来看下是否正常。
    用ftp是否有用户校验。如果加载图片有校验,Glide取图片却返回了一个html,这时候Glide也是缓存下来保存成图片,这时候是无法正确加载的。