1、下载图片 (inputStream –> drawable)
/**
* 1、下载图片 inputStream --> drawable
*
* @param imageUrl
* @return
*/
private Drawable loadDrawableImage(String imageUrl) {
Drawable drawable = null;
try {
// 可以在这里通过文件名来判断,是否本地有此图片
drawable = Drawable.createFromStream(
new URL(imageUrl).openStream(), "image.jpg");
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return drawable;
}
使用:
Drawable drawable1 = loadDrawableImage(IMAGE_URL);
imageView.setImageDrawable(drawable1);
2、getImage (inputStream –> byte –> bitmap)(最佳方法)
/**
* 2、getImage inputStream --> byte --> bitmap
* @param path
* @return
* @throws Exception
*/
public Bitmap getImage(String path) throws Exception {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setReadTimeout(10 * 1000);
conn.setConnectTimeout(10 * 1000);
conn.setRequestMethod("GET");
InputStream in = null;
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
in = conn.getInputStream();
} else {
in = null;
}
if (in == null){
throw new RuntimeException("stream is null");
} else {
try {
// 调用getBytes(in)方法
byte[] data = getBytes(in);
if(data!=null){
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
return bitmap;
}
} catch (Exception e) {
e.printStackTrace();
}
in.close();
return null;
}
}
得到图片字节流数组大小 (inputStream –> byte)
/*
* 得到图片字节流数组大小 inputStream --> byte
*/
public static byte[] getBytes(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();
}
使用:
final Bitmap bitmap = loadBitmapImage(IMAGE_URL);
imageView.setImageBitmap(bitmap);
3、getUrlBitmap (inputStream –> bitmap) 或者(inputStream –> byte –> bitmap)
/**
* 2、getUrlBitmap (inputStream --> bitmap) 或者(inputStream --> byte --> bitmap)
* @param url
* @return
*/
private Bitmap getUrlBitmap(String url) {
Bitmap bm;
try {
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
// byte[] bt=getBytes(is); //注释部分换用另外一种方式解码
// bm=BitmapFactory.decodeByteArray(bt,0,bt.length);
bm = BitmapFactory.decodeStream(is); // 如果采用这种解码方式在低版本的API上会出现解码问题
is.close();
conn.disconnect();
return bm;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}