获取网络图片的几种方式

原创 2016年08月30日 09:59:06

     获取网络图片是Android中常用的功能,除了随着应用网络请求框架的不同,获取网络图片的代码也就不同。自己总结了几种方式:

     (1)使用HttpUrlConnection方式请求网络,这种方式不适用于多个图片下载的场景

        new Thread(new Runnable() {

@Override
public void run() {

try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(2000);
conn.connect();
if (conn.getResponseCode() == 200) {
InputStream is = conn.getInputStream();
//解析数据流 解析成图片
Bitmap bitmap = BitmapFactory.decodeStream(is);
Message message = myHandler.obtainMessage();
message.obj = bitmap;
myHandler.sendMessage(message);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();


             private Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.obj != null) {
Bitmap bitmap = (Bitmap) msg.obj;
image1.setImageBitmap(bitmap);
}
};
};

  (2)使用volley方式  volley方式用到的主要的核心类是ImageRequest

      1.创建请求队列(一个页面创建一个就OK)

      2.创建进行图片请求的对象

      3.把图片请求加入到请求队列当中

     RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

     ImageRequest imageRequest = new ImageRequest(path, new Listener<Bitmap>() {


@Override
public void onResponse(Bitmap response) {
image.setImageBitmap(response);
}
}, 0, 0, Config.ARGB_8888, new ErrorListener() {


@Override
public void onErrorResponse(VolleyError error) {
image.setImageResource(R.drawable.ic_launcher);
}
});
queue.add(imageRequest);

 (3)使用ImageLoader进行图片请求

           1.创建请求队列

           2.创建ImageLoader

           3.使用ImageLoader获取图片

   RequestQueue   queue = Volley.newRequestQueue(context);

   ImageCache imageCache = new ImageCache() {

@Override
public void putBitmap(String url, Bitmap bitmap) {

}

@Override
public Bitmap getBitmap(String url) {
return null;
}
};

   ImageLoader imageLoader = new ImageLoader(queue,imageCache);

   ImageListener imageListener = ImageLoader.getImageListener(image1, R.drawable.ic_launcher,            R.drawable.ic_launcher);

   imageLoader.get(path,imageListener);

(4)使用Volley里面的NetWorkImageView,这个控件继承了ImageView的所有属性,结合了ImageLoader

  private NetworkImageView image;

  image  = (NetworkImageView) findViewById(R.id.image);

  ImageCache imageCache2 = new ImageCache() {

@Override
public void putBitmap(String url, Bitmap bitmap) {
// TODO Auto-generated method stub

}

@Override
public Bitmap getBitmap(String url) {
// TODO Auto-generated method stub
return null;
}
};
ImageLoader imageLoader2 = new ImageLoader(queue, imageCache2);
image.setDefaultImageResId(0);
image.setErrorImageResId(R.drawable.ic_launcher);

image.setImageUrl(path, imageLoader2);

  (5)使用Picasso获取图片,一句代码

       Picasso.with(MainActivity.this).load(path).centerCrop().resize(targetWidth, targetHeight).into(image1);

     

本地获取图片的几种常用方式和网络获取图片

前言通常,我们从本地获取图片的方式用得最多的莫过于[UIImage imageNamed:]了,方便、快速、易用,但是有着它的缺陷,那就是不宜获取太大的图片,所以,本文主要浅析一下几种常见的本地获取图...
  • Mango_ios
  • Mango_ios
  • 2016年10月24日 11:19
  • 586

Spring在代码中获取bean的几种方式

方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类Application...
  • judyfun
  • judyfun
  • 2016年08月15日 12:34
  • 4036

从WebView获取图片的几种方式

微信在浏览网页的时候,我们可以选择长按图片,然后会弹出对话框,询问我们要做什么——保存啊,收藏啊什么的。恰好项目中要用到这个功能,就小做了一番研究, 各种找资料看博客浏览源码,总结了几种方式,特此记录...
  • sollian
  • sollian
  • 2017年01月05日 15:53
  • 2367

Android开发笔记之get请求方式获得网络图片

获取网络图片 网络图片必须要有网络权限才可以,添加网络权限 请求图片是一个耗时操作,主线程是不允许进行耗时操作的,以免造成ANR,所以我们需要开启一个线程去请求网络图片,获取到图片发送到主线程进行显示...
  • u012416955
  • u012416955
  • 2016年07月20日 16:39
  • 2694

html 图片显示的几种方式

1,直接访问: 2,间接访问: 需要CGI配合,返回的数据为图片数据 重点在这:Content-type: image/jpeg 3,直接给数据: 说明: data:,          ...
  • say751223303
  • say751223303
  • 2017年08月03日 11:35
  • 328

虚拟机下Linux网络设置几种方式的区别

(1).bridged 桥接模式     在这种模式下,虚拟机上的操作系统就像是局域网中的一台独立主机,它可以访问网内的任何一台机器。在桥接模式下你需要手动为虚拟系统配置ip地址,子网掩码,而且还要...
  • zndxlxm
  • zndxlxm
  • 2016年02月05日 12:59
  • 1175

网络爬虫的六种方式

突然对网络爬虫特别感兴趣,所以就上网查询了下,发现这个特别好。给大家分享下。 现在有越来越多的人热衷于做网络爬虫(网络蜘蛛),也有越来越多的地方需要网络爬虫,比如搜索引擎、资讯采集、舆情监测等等,诸如...
  • gtlishujie
  • gtlishujie
  • 2016年09月22日 11:32
  • 1824

SSM知识点整理

resultType和resultMap的区别是什么?  MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直...
  • libaxuann
  • libaxuann
  • 2017年10月26日 16:54
  • 266

Struts2封装获取表单数据方式

struts 框架 JAVAEE action
  • qq_33248299
  • qq_33248299
  • 2017年03月16日 09:31
  • 479

获取网络图片之---三种方式

android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Application Not Responding)对话框的情况。对于这种情况,一般的方法就是耗时操作用...
  • zhengxiangwen
  • zhengxiangwen
  • 2015年12月10日 01:07
  • 676
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取网络图片的几种方式
举报原因:
原因补充:

(最多只允许输入30个字)