问题描述:

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

代码如下:

private Bitmap getUrlBitmap(String url) {
Bitmap bm;
try {
URL imageUrl = new URL(url);
InputStream is = imageUrl .openStream();
bm = BitmapFactory.decodeStream(is); // 如果采用这种解码方式在低版本的API上会出现解码问题
is.close();
return bm;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null; }

解决办法:定义一个根据图片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);

最新文章

  1. 关于git的简单实用命令
  2. 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里
  3. Activity与Fragment的生命周期
  4. wifi共享小工具
  5. LA 4123 - Glenbow Museum
  6. pytho
  7. bzoj2561
  8. 解决kibana 4 关于响应时间的问题
  9. USB mass storage协议
  10. Android Gradle manifestPlaceholders 占位符详解
  11. Ext秒表
  12. Vue.js 基本功能了解
  13. Struts2-046验证脚本
  14. ThreadLocal(线程绑定)
  15. Hibernate的增删改查(事务)
  16. node.js学习6---第三方依赖(模块或者说是包)的导入 npm 以及 cnpm命令的使用
  17. DataGrid 查出一个列 按要求显示格式 例如:操作人(地点)
  18. python os.path.dirname()
  19. 前端三大框架之一React入门教程
  20. sublime自动对齐Alignment插件快捷键

热门文章

  1. Intel Processor Exception Handling
  2. Flask框架 之request对象
  3. Pytorch 加载保存模型【直播】2019 年县域农业大脑AI挑战赛---(三)保存结果
  4. 12Oracle Database SQL程序
  5. 【转载】Appium环境搭建(Windows版)
  6. Mkdocs在html网页上看markdown
  7. idea使用maven install命令打包(springboot),jar运行时出现没有主清单属性
  8. C++11 Thread多线程的学习心得与问题
  9. [USACO06JAN] 冗余路径 Redundant Paths
  10. [USACO06JAN] 牛的舞会 The Cow Prom