从网络获取图片,数据为InputStream流对象,然后调用BitmapFactory的decodeStream()方法解码获取图片。代码如下:

     private    Bitmap getUrlBitmap(String url) { Bitmap bm;    try   { URL imageUrl   =   new    URL(url); HttpURLConnection conn   =   (HttpURLConnection)imageUrl.openConnection(); conn.connect(); InputStream is   =   conn.getInputStream();    //   byte[] bt=getBytes(is);    //   注释部分换用另外一种方式解码    //   bm=BitmapFactory.decodeByteArray(bt,0,bt.length);        bm   =   BitmapFactory.decodeStream(is);    //   如果采用这种解码方式在低版本的API上会出现解码问题        is.close(); conn.disconnect();    return    bm; }    catch   (MalformedURLException e) { e.printStackTrace(); }    catch    (IOException e) { e.printStackTrace(); }    return       null   ; }  

结果在运行时编译器提示: DEBUG / skia (xxx ): --- decoder -> decode returned false

已经确定从网络获取的数据流没有出现问题,而是在图片解码时出现错误。上网查找了不少资料,也没有得出确切的原因,不过有几条意见值得关注。

一种说法是在android 较低版本的api中会有不少内部的错误,我的代码运行时选择2.1API Level 7和2.2API Level 8都会出现这个问题,而选择2.3 API Level 9后能够正常解码图片。

我的另外一种做法是换用别的解码方式对图片解码,见代码中被注释的那俩行,使用decodeByteArray()方法在低版本的API上也能够正常解码,解决了这个问题。

其中getBytes(InputStream is)是将InputStream对象转换为Byte[]的方法,具体代码如下:

     private       byte   [] getBytes(InputStream is)    throws    IOException { ByteArrayOutputStream baos    =       new    ByteArrayOutputStream();    byte   [] b    =       new       byte   [   1024   ];    int    len    =       0   ;    while    ((len    =    is.read(b,    0   ,    1024   ))    !=       -   1   ) { baos.write(b,    0   , len); baos.flush(); }    byte   [] bytes    =    baos.toByteArray();    return    bytes; }  

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)eclipse 自动补全的设置
  3. Android(安卓)绘制电池电量图标(含充电状态)。
  4. android 通过intent调用短消息的正确方法
  5. Android(安卓)- 基于Toolbar的Navigation Drawer(Material Desig
  6. android meta-data 读取
  7. Android中不显示标题
  8. This version of android studio is incompatible with the grad
  9. 在Android(安卓)studio中使用viewpager创建出图片轮播效果

随机推荐

  1. Android(安卓)Xml解析
  2. Android短信拦截解决方案
  3. Android 下使用wpa_cli 连接 wifi
  4. Android(安卓)Service两种启动方式详解(总
  5. Android Gallery(超豪华胜优酷,自动无限
  6. android 弹出提示框
  7. API 23 找不到 org.apache.http.HttpResp
  8. android 如何优雅地给Activity和Fragemen
  9. android 4.4 webview加载部分https网页白
  10. [置顶] android 日记