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 直接加载图片流相关推荐

  1. uniapp页面显示服务器图片,uniapp实现加载图片失败显示占位图

    平常在项目中,我们会经常需要有加载网络图片的功能,但是存在图片地址问题.网络问题等导致图片加载失败,需要展示一个占位图,所以我这里总结了三种办法,仅供大家参考,写的不好大家见谅. 一.导入第三方插件, ...

  2. android imageview 显示资源图片,ImageView显示网络图片资源

    Android ImageView如何加载网络图片资源有些事,可以看透,但不要看破;有些人,可以看穿,但不要戳穿;有些话,能不说就沉默,藏在心里更适合;有些伤,能不揭就不提起,无声忘记更明智. 用im ...

  3. potato显示服务器忙,potato为什么加载这么慢

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. potato加载这么慢的原因是: 1.可能是路由器缓存过多导致,可以尝试重启路由器. 2.可能是电脑系统bug导致,建议重启电脑或 ...

  4. android picasso 显示本地图片,剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)...

    之前项目中使用Picasso遇到了一个问题:在Android 5.0以上版本的部分手机上使用Picasso加载本地图片会失败.为了解决这个问题,研究了一下Picasso加载和压缩本地图片的流程,才有了 ...

  5. 电脑显示服务器未能登陆 无法加载用户配置,win7系统提示User Profile Service服务未能登录,无法加载用户配置文件的解决方法...

    很多小伙伴都遇到过win7系统提示User Profile Service服务未能登录,无法加载用户配置文件的困惑吧,一些朋友看过网上零散的win7系统提示User Profile Service服务 ...

  6. android 横向铺满,Android开发全程记录(八)——设置ImageView显示的图片铺满全屏(适应魅族等不常见屏幕比例)...

    为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...

  7. imageview显示圆形图片

    需要ImageView显示圆形图片做法如下 public static Bitmap toRoundCorner(Bitmap bitmap, float ratio) {System.out.pri ...

  8. 网页 从其他服务器 加载图片,实现网页图片的异步加载

    如题. 最近在进行开发的项目中,有一个网页需要使用非常多的图片,那么必须对图片的加载做优化.使用流式加载图片的方法是绝对不行,对服务器的带宽将是非常大的考验,于是,我考虑使用图片的异步加载. 在网上寻 ...

  9. 关于图片加载的问题-如加载失败显示占位图,预加载,懒加载

    一.图片加载失败时,如图所示 <img v-if="src" :src="src" :onerror="errorImg">le ...

  10. 怎么让图片铺满手机屏幕_设置ImageView显示的图片铺满全屏

    为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...

最新文章

  1. 国内IT出版社的四大软肋
  2. Windows10如何设置系统保护色
  3. Spring MVC Controller 要点
  4. python 字符串分割和拼接_python分割和拼接字符串
  5. socket技术难点
  6. 关于deepearth的一点小问题
  7. ArrayList源码浅析
  8. c++实现二叉树操作
  9. C++混淆点-构造函数参数
  10. 海归硕士程序员吐槽:我回国竟然找不到工作,这到底是什么操作?
  11. 关于Python你必须知道的常识
  12. 递归 dfs 记忆化搜索 动态规划
  13. 配置oracle odbc驱动,oracle odbc driver configuration
  14. logistics 与最大熵模型原理及python代码实现
  15. 反转链表与链表实现两数相加(简单思路)
  16. 写博文有助于提高编程能力,因为写文章比写代码难多了
  17. 新春活动策划案例(共31份)
  18. 怎样批量分析安能物流中含有提前签收的单号
  19. ROS2中的行为树 BehaviorTree
  20. java resin_resin启动问题

热门文章

  1. 错误 C1189 #error MFC does not support WINVER less than 0x0501.
  2. Homestead GuestAdditions seems to be installed (6.0.6) correctly, but not running
  3. Ardunio开发实例-简单声音感应控制开关
  4. Python爬取中国银行外汇牌价(爬虫 + PyFlux简单预测分析)--(一)
  5. python绘制一个太极图案_python中简单易学的绘图:用turtle画太极图
  6. mapper找不到报错:Field xxxMapper in xxx required a bean of type 'xxxMapper' that could not be found
  7. 用python玩微信(聊天机器人,好友信息统计)
  8. linux 命令 tr 详解
  9. 【Linux基础编程】tr命令
  10. 致远OA漏洞学习——A6版本Session泄漏伪造漏洞