保存下载的图片
来源:互联网 发布:诗歌鉴赏答题技巧软件 编辑:程序博客网 时间:2024/05/14 23:30
在前一篇博客笔记HttpURLConnection下载网络图片中学习了下载并显示网络上的一张图片,在此基础上怎么保存该网络图片,关键代码如下:
private void downloadPicture(){String urlStr = "http://img.my.csdn.net/uploads/201407/26/1406383291_6518.jpg";HttpURLConnection conn = null;BufferedInputStream bis = null;File imageFile = null;FileOutputStream fos = null;BufferedOutputStream bos = null;try {URL url = new URL(urlStr);conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5 * 1000);//设置网络连接超时conn.setReadTimeout(10 * 1000);//设置读取数据超时conn.setDoInput(true);//设置是否从httpUrlConnection读入,默认情况下是true; /* *设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 *http正文内,因此需要设为true, 默认情况下是false; */conn.setDoOutput(true);InputStream in = conn.getInputStream();Bitmap bm = BitmapFactory.decodeStream(in);//保存该图片到指定的目录bis = new BufferedInputStream(conn.getInputStream());imageFile = new File(getImagePath(urlStr));fos = new FileOutputStream(imageFile);bos = new BufferedOutputStream(fos);byte[] b = new byte[1024];int length;while ((length = bis.read(b)) != -1) {bos.write(b, 0, length);bos.flush();}/* 1、android子线程不能更新主线程创建的组件解决方法 * * 2、如果强制使用 imageview.setImageBitmap(bitmap); * 则会报错 android.view.ViewRootImpl$CalledFromWrongThreadException */Message message = Message.obtain();message.obj = bm;handler.sendMessage(message);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {try {if (bis != null) {bis.close();}if (bos != null) {bos.close();}if (conn != null) {conn.disconnect();}} catch (IOException e) {e.printStackTrace();}}}
/** * 获取图片的本地存储路径。 * * @param imageUrl * 图片的URL地址。 * @return 图片的本地存储路径。 */private String getImagePath(String imageUrl) {int lastSlashIndex = imageUrl.lastIndexOf("/");String imageName = imageUrl.substring(lastSlashIndex + 1);String imageDir = Environment.getExternalStorageDirectory().getPath() + "/URLDemo/";File file = new File(imageDir);if (!file.exists()) {file.mkdirs();}String imagePath = imageDir + imageName;return imagePath;}
最后要注意的是,在执行file.mkdirs();要增加权限,增加的如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
0 0
- 保存下载的图片
- 图片的下载和保存
- 保存 取消 图片的修改 下载图片
- Unity3D图片的下载及保存
- 下载图片并保存
- ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
- AS3下载并保存图片
- 从服务器下载保存图片
- GCD下载保存图片 缓存
- scrapy 下载并保存图片
- Oracle数据库保存、下载图片
- [unity3d]下载网上的图片并保存到本地
- 封装保存、下载图片到本地的方法记录
- java下载并保存网页上的图片
- 下载保存的图片背景由透明变为黑色问题解决
- python 下载 保存 图片的urllib.urlretrieve()函数 简单用法
- tif文件下载 保存成图片,或图片保存
- 用ASP.NET实现下载远程图片保存到本地的方法 保存抓取远程图片的方法
- hdu4819 Mosaic,二维线段树
- Jquery为show()函数添加触发器,调用回调函数
- unicode utf-8 ascii 区别与联系
- 复杂指针
- jquery之empty()与remove()区别
- 保存下载的图片
- DAE模型与骨骼动画解析渲染
- linq 多表连接 lambal left join
- c/c++中static关键字的总结
- Python 正则表达式验证整数
- XDOJ1174 - 素数时间
- 两个多线程笔试问题引发的思考
- centos6.4安装hadoop2.2.0
- 数据库索引的优缺点及使用时的注意事项