android BitmapFactory.decodeByteArray()=null
2013-06-05 13:51
357 查看
String urlString = "http://10.11.0.121:8914/ElectronicMagazine/TemporaryFile/218.jpg"; URL url = new URL(urlString); URLConnection connection = url.openConnection(); InputStream is = connection.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); bmp = BitmapFactory.decodeStream(bis); bis.close();
上面是我的程序源码
在今天上午遇到一个比较灵异的问题(通常我认为在程序中不该出现的问题,或检查几遍代码没问题的情况下出现的问题称灵异问题)
在第一个Acvitity中有一个button。点击这个Button跳转到第二个Activity中并从网络下载图片填充到ImageView中,第一次点击跳转后图片成功填充至ImageIVew。返回再次点击的时候无效,第三次点击的时候又正常,继续点击又无效。这个问题让我很苦恼
我认为可能是缓存的问题,测试缓存,在Activity onStop()的时候给个一个this.finsh();结束当前Activity。程序再次跑起来,问题依然在。
在仔细检查代码后发现可能是输入流并未关闭的问题,发现这个问题后很惊喜,以为关一下流就可以解决了这个困扰了半天的问题了,于是关闭后再次运行。我去,灵异这哥们还呆在原地。
做了一个小Demo测试了一下,点按钮跳到另外一个页面并下载图片填充ImageView。在Demo中百试百灵,这让我很是郁闷,Demo中可以,为什么在我的程序中不行呢。
没办法了再次调试呗,这一调出现在了一个很大的问题BitmapFactory.decodeByteArray()返回值竟然为null。我说怎么Bitmap没东西呢
第四步,在网上百度,最后/article/1664800.html (catoop)这哥们也遇到和我同样的问题,还好前辈已有解决方法,大喜,分析了一下他的解决方案,并运用在我的程序中,灵异那哥们感觉玩够了,终于走了,又还我程序一个太平世界。
解决方法
这个android 的一个bug 。在android 2.2 以下(我在测试中发现貌似2.3也不行) 用 BitmapFactory.decodeStream() 这个方法,会出现概率性的解析失败的异常。而在高版本中,eg 2.3 则不会出现这种异常。
//定义一个根据图片url获取InputStream的方法 public static byte[] getBytes(InputStream is) throws IOException { ByteArrayOutputStream outstream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; // 用数据装 int len = -1; while ((len = is.read(buffer)) != -1) { outstream.write(buffer, 0, len); } outstream.close(); // 关闭流一定要记得。 return outstream.toByteArray(); } //然后使用方法decodeByteArray()方法解析编码,生成Bitmap对象。 byte[] data = getBytesFromInputStream(new URL(imgUrl).openStream()); Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
相关文章推荐
- Xamarin.Android OOM 思路整理 (BitmapFactory.DecodeByteArray)
- android获取网络图片的用法 BitmapFactory.decodeByteArray 返回null
- android BitmapFactory.decodeFile()返回为null问题
- BitmapFactory.decodeByteArray函数获取的bitmap为null
- BitmapFactory.decodeByteArray() 返回null,分析与解决
- BitmapFactory.decodeByteArray() 返回null,分析与解决
- android获取网络图片的用法 BitmapFactory.decodeByteArray
- Android异步从网络加载图片BitmapFactory.decodeStream 返回null的问题
- 解决android BitmapFactory.decodeStream()返回null
- Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限
- Android异步加载图片资源,BitmapFactory.decodeStream返回null的问题
- 调用 BitmapFactory.decodeByteArray 函数返回 null 值
- Android中view转换为bitmap为null解决方案
- android之BitmapFactory.Options的使用
- 血的教训 BitmapFactory.decodeByteArray() 是个邪恶的方法
- 转载 Android中使用BitmapFactory的decodeStream()方法解码图片失败问题
- android中使用BitmapFactory的decodeStream()方法解码图片失败问题
- BitmapFactory.decodeStream。报错:SkImageDecoder::Factory returned null 原因及解决方法
- android bitmap 属性 BitmapFactory 属性 bitmapDrawable属性
- android BitmapFactory.Options参数介绍