imageview显示服务器图片,imageview 直接加载图片流
imageview 直接加载图片流
第一步:new一个线程直接获取接口返回的图片流stream,如果项目使用的网络请求框架能直接获取inputstream,那就不需要自己写线程。
/**
* 获取网络图片资源
*
* @param urlString
* @return
*/
public void getHttpBitmap(final String urlString) {
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection = null;
try {
URL url = new URL(urlString);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
Bitmap bitmap = null;
final InputStream is = connection.getInputStream();
if (is == null) {
throw new RuntimeException("stream is null");
} else {
try {
byte[] data = readStream(is);
if (data != null) {
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
}
} catch (Exception e) {
e.printStackTrace();
}
is.close();
}
// // 下面对获取到的输入流进行读取
// BufferedReader reader = new BufferedReader(new InputStreamReader(in));
// StringBuilder response = new StringBuilder();
// String line;
// while ((line = reader.readLine()) != null) {
// response.append(line);
// }
Message message = new Message();
message.what = SHOW_RESPONSE;
// 将服务器返回的结果存放到Message中
message.obj = bitmap;
handler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}).start();
}
第二步:
如果直接使用
BitmapFactory.decodeStream(inputStream),这个时候得到的是null。
原因:应该是decodeStream的时候流已经关闭。因为我是把inputstream放在message中,传递到handle中,再解析流。
参考:http://blog.csdn.net/maxwell_nc/article/details/49081105
/*
* 得到图片字节流 数组大小
* */
public static byte[] readStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
return outStream.toByteArray();
}
第三步:
在handle中接收处理
public final static int SHOW_RESPONSE = 110;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW_RESPONSE:
//然后使用方法decodeByteArray()方法解析编码,生成Bitmap对象。
mIvCaptcha.setImageBitmap((Bitmap) msg.obj);
}
}
};
imageview显示服务器图片,imageview 直接加载图片流相关推荐
- uniapp页面显示服务器图片,uniapp实现加载图片失败显示占位图
平常在项目中,我们会经常需要有加载网络图片的功能,但是存在图片地址问题.网络问题等导致图片加载失败,需要展示一个占位图,所以我这里总结了三种办法,仅供大家参考,写的不好大家见谅. 一.导入第三方插件, ...
- android imageview 显示资源图片,ImageView显示网络图片资源
Android ImageView如何加载网络图片资源有些事,可以看透,但不要看破;有些人,可以看穿,但不要戳穿;有些话,能不说就沉默,藏在心里更适合;有些伤,能不揭就不提起,无声忘记更明智. 用im ...
- potato显示服务器忙,potato为什么加载这么慢
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. potato加载这么慢的原因是: 1.可能是路由器缓存过多导致,可以尝试重启路由器. 2.可能是电脑系统bug导致,建议重启电脑或 ...
- android picasso 显示本地图片,剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)...
之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...
- 电脑显示服务器未能登陆 无法加载用户配置,win7系统提示User Profile Service服务未能登录,无法加载用户配置文件的解决方法...
很多小伙伴都遇到过win7系统提示User Profile Service服务未能登录,无法加载用户配置文件的困惑吧,一些朋友看过网上零散的win7系统提示User Profile Service服务 ...
- android 横向铺满,Android开发全程记录(八)——设置ImageView显示的图片铺满全屏(适应魅族等不常见屏幕比例)...
为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...
- imageview显示圆形图片
需要ImageView显示圆形图片做法如下 public static Bitmap toRoundCorner(Bitmap bitmap, float ratio) {System.out.pri ...
- 网页 从其他服务器 加载图片,实现网页图片的异步加载
如题. 最近在进行开发的项目中,有一个网页需要使用非常多的图片,那么必须对图片的加载做优化.使用流式加载图片的方法是绝对不行,对服务器的带宽将是非常大的考验,于是,我考虑使用图片的异步加载. 在网上寻 ...
- 关于图片加载的问题-如加载失败显示占位图,预加载,懒加载
一.图片加载失败时,如图所示 <img v-if="src" :src="src" :onerror="errorImg">le ...
- 怎么让图片铺满手机屏幕_设置ImageView显示的图片铺满全屏
为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...
最新文章
- 国内IT出版社的四大软肋
- Windows10如何设置系统保护色
- Spring MVC Controller 要点
- python 字符串分割和拼接_python分割和拼接字符串
- socket技术难点
- 关于deepearth的一点小问题
- ArrayList源码浅析
- c++实现二叉树操作
- C++混淆点-构造函数参数
- 海归硕士程序员吐槽:我回国竟然找不到工作,这到底是什么操作?
- 关于Python你必须知道的常识
- 递归 dfs 记忆化搜索 动态规划
- 配置oracle odbc驱动,oracle odbc driver configuration
- logistics 与最大熵模型原理及python代码实现
- 反转链表与链表实现两数相加(简单思路)
- 写博文有助于提高编程能力,因为写文章比写代码难多了
- 新春活动策划案例(共31份)
- 怎样批量分析安能物流中含有提前签收的单号
- ROS2中的行为树 BehaviorTree
- java resin_resin启动问题
热门文章
- 错误 C1189 #error MFC does not support WINVER less than 0x0501.
- Homestead GuestAdditions seems to be installed (6.0.6) correctly, but not running
- Ardunio开发实例-简单声音感应控制开关
- Python爬取中国银行外汇牌价(爬虫 + PyFlux简单预测分析)--(一)
- python绘制一个太极图案_python中简单易学的绘图:用turtle画太极图
- mapper找不到报错:Field xxxMapper in xxx required a bean of type 'xxxMapper' that could not be found
- 用python玩微信(聊天机器人,好友信息统计)
- linux 命令 tr 详解
- 【Linux基础编程】tr命令
- 致远OA漏洞学习——A6版本Session泄漏伪造漏洞