安卓BitmapFactory.decodeStream()返回null的问题解决方法
2024-08-23 04:51:37
问题描述:
从网络获取图片,数据为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);
最新文章
- 关于git的简单实用命令
- 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里
- Activity与Fragment的生命周期
- wifi共享小工具
- LA 4123 - Glenbow Museum
- pytho
- bzoj2561
- 解决kibana 4 关于响应时间的问题
- USB mass storage协议
- Android Gradle manifestPlaceholders 占位符详解
- Ext秒表
- Vue.js 基本功能了解
- Struts2-046验证脚本
- ThreadLocal(线程绑定)
- Hibernate的增删改查(事务)
- node.js学习6---第三方依赖(模块或者说是包)的导入 npm 以及 cnpm命令的使用
- DataGrid 查出一个列 按要求显示格式 例如:操作人(地点)
- python os.path.dirname()
- 前端三大框架之一React入门教程
- sublime自动对齐Alignment插件快捷键
热门文章
- Intel Processor Exception Handling
- Flask框架 之request对象
- Pytorch 加载保存模型【直播】2019 年县域农业大脑AI挑战赛---(三)保存结果
- 12Oracle Database SQL程序
- 【转载】Appium环境搭建(Windows版)
- Mkdocs在html网页上看markdown
- idea使用maven install命令打包(springboot),jar运行时出现没有主清单属性
- C++11 Thread多线程的学习心得与问题
- [USACO06JAN] 冗余路径 Redundant Paths
- [USACO06JAN] 牛的舞会 The Cow Prom