在做android开发的时候,经常需要从网上下载一些图片,在界面上显示,一般的获取图片都会使用如下的代码:
//获取connection,方法略
conn = getURLConnection(url);
is = conn.getInputStream();
//获取Bitmap的引用
Bitmap bitmap = BitmapFactory.decodeStream(is)
但是上面的方法在设备上或是网速不太好的情况下,会获取不了图片,推荐使用如下的方法:
//获取长度
int length = (int) conn.getContentLength();
if (length != -1) {
byte[] imgData = new byte[length];
byte[] temp=new byte[512];
int readLen=0;
int destPos=0;
while((readLen=is.read(temp))>0){
System.arraycopy(temp, 0, imgData, destPos, readLen);
destPos+=readLen;
}
bitmap=BitmapFactory.decodeByteArray(imgData, 0, imgData.length);
}
使用上面的方法的好处是在网速不好的情况下也会将图片数据全部下载,然后在进行解码,生成图片对象的引用,所以可以保证只要图片存在都可以下载下来。当然在读取图片数据的时候也可用java.nio.ByteBuffer,这样在读取数据前就不用知道图片数据的长度也就是图片的大小了,避免了有时候http获取的length不准确,并且不用做数组的copy工作。
分享到:
相关推荐
DownLoadImageToGallery: Android 下载图片保存到相册
Android 下载图片 简单 例子 Android Image DownLoader
android 下载图片并缓存的demo
android 下载图片到sdcard 并保存到指定的文件中
android 图片选择图片上传到服务端并保存到mysql数据库,同时能支持从服务端下载图片资源
Android批量下载图片并进行缓存,本例包含内存和文件二重缓存,极大的提高流畅度。
android 图片下载 有效解决内存溢出问题 android 图片下载 有效解决内存溢出问题
便捷下载 for Android 支持多平台一键批量下载图片、音频、视频的懒人工具
android 图片异步下载,很实用。可以同时下载多张照片
Android图片下载显示(相册效果)
android异步下载图片从网络上 分别用handler Asyntask 和线程池
android io 下载图片 android io 下载图片
实现异步加载大量图片的源码和例子,包括缓存、硬盘缓存、容错机制等技术。这是一个开源的项目,在github上下载的,实现的很好。
android 异步加载图片的机制
Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 (三个全) Android异步下载网络图片 ...
android根据url下载图片的网络ImageView
详情查看:https://blog.csdn.net/automoblie0/article/details/122646237
集成了图片选择(单选,多选), 裁剪(矩形裁剪,圆形裁剪等),预览(网络和本地图片均可显示,图片放大缩小,删除), 下载(下载到本地)的一条龙服务;
在Android远程上传以及下载图片
android实现音频、图片下载功能的代码实例,可以运行的,对于需要实现该功能的人很实用