博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】 Bitmap出现 decoder->decode returned false 错误
阅读量:6327 次
发布时间:2019-06-22

本文共 2562 字,大约阅读时间需要 8 分钟。

Android Bitmap出现 decoder->decode returned false 错误

在开发Android中广告条,实现多张广告图片切换,遇到广告图片下载失败,抓取LOG

出现的问题为 decoder->decode returned false。

上网搜索发现解决办法 ,

参考文章 Android decoder->decode returned false for Bitmap download  

文章地址 http://blog.163.com/dangzhengtao@yeah/blog/static/77800874201121814455655/

一种方法是

1.创建静态类FlushedInputStream

static class FlushedInputStream extends FilterInputStream {        public FlushedInputStream(InputStream inputStream) {            super(inputStream);        }         @Override        public long skip(long n) throws IOException {            long totalBytesSkipped = 0L;            while (totalBytesSkipped < n) {                long bytesSkipped = in.skip(n - totalBytesSkipped);                if (bytesSkipped == 0L) {                    int b = read();                    if (b < 0) {                        break;  // we reached EOF                    } else {                        bytesSkipped = 1; // we read one byte                    }                }                totalBytesSkipped += bytesSkipped;            }            return totalBytesSkipped;        }    }

2. 修改图片下载代码

public void setDrawable() {        URL url = null;        URLConnection conn = null;        try {            url = new URL(“图片地址”);            conn = url.openConnection();            Bitmap b = BitmapFactory.decodeStream(new FlushedInputStream(conn.getInputStream()));            this.drawable = new BitmapDrawable(b);        } catch (Exception ex) {            ex.printStackTrace();        } finally {            url = null;            conn = null;        }    }

另一种方法是

这里直接帖代码了,没有验证,有兴趣的朋友可以研究。

public static Bitmap loadImageFromUrl(String url) {        URL m;        InputStream i = null;        BufferedInputStream bis = null;        ByteArrayOutputStream out =null;        try {            m = new URL(url);            i = (InputStream) m.getContent();            bis = new BufferedInputStream(i,1024 * 8);            out = new ByteArrayOutputStream();            int len=0;            byte[] buffer = new byte[1024];            while((len = bis.read(buffer)) != -1){                out.write(buffer, 0, len);            }            out.close();            bis.close();        } catch (MalformedURLException e1) {            e1.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        byte[] data = out.toByteArray();        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);        //Drawable d = Drawable.createFromStream(i, "src");        return bitmap;    }

 

本文出自 

文章地址 

感谢大家的推荐和收藏

转载地址:http://uugaa.baihongyu.com/

你可能感兴趣的文章
获取SQL数据库中的数据库名、所有表名、所有字段名、列描述
查看>>
Percona Toolkit 2.1.5 发布
查看>>
Cookie的生命周期问题
查看>>
Orchard 视频资料
查看>>
简述:预处理、编译、汇编、链接
查看>>
调试网页PAIP HTML的调试与分析工具
查看>>
路径工程OpenCV依赖文件路径自动添加方法
查看>>
玩转SSRS第七篇---报表订阅
查看>>
WinCE API
查看>>
利用WCF改进文件流传输的三种方式
查看>>
通用权限系统快速开发框架源代码
查看>>
Silverlight信息加密 - 通过Rfc2898DeriveBytes类使用基于HMACSHA1的伪随机数生成器实现PBKDF2...
查看>>
.NET 4.5.1 预览版新特性
查看>>
TaintDroid:智能手机监控实时隐私信息流跟踪系统(三)
查看>>
Spring 使用注解方式进行事务管理
查看>>
Anagrams by Stack(深度优先搜索)
查看>>
Tiny6410 设备驱动之helloworld
查看>>
MongoDB副本集学习(二):基本测试与应用
查看>>
POJ 3280 Cheapest Palindrome(DP 回文变形)
查看>>
oracle修改内存使用和性能调节,SGA
查看>>