通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地。

首先需要在manifest上添加一些权限:

  1. <!-- 访问网络的权限 -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <!-- 文件读取的权限 -->
  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  5. <!-- 向SD卡中创建或者删除的权限。 -->
  6. <uses-permission android:name="andorid.permission.MONUN_UNMOUNT_FILESYSTEMS"/>
    1. package com.xjw.test;
    2. import java.io.File;
    3. import java.io.FileOutputStream;
    4. import java.io.InputStream;
    5. import java.net.HttpURLConnection;
    6. import java.net.URL;
    7. import android.os.AsyncTask;
    8. import android.os.Bundle;
    9. import android.os.Environment;
    10. import android.os.Handler;
    11. import android.os.Message;
    12. import android.app.Activity;
    13. import android.graphics.Bitmap;
    14. import android.graphics.BitmapFactory;
    15. import android.view.View;
    16. import android.view.View.OnClickListener;
    17. import android.widget.Button;
    18. import android.widget.ImageView;
    19. import android.widget.Toast;
    20. public class MainActivity extends Activity implements OnClickListener{
    21. Button content;
    22. ImageView image;
    23. Bitmap bitmap;
    24. protected void onCreate(Bundle savedInstanceState) {
    25. super.onCreate(savedInstanceState);
    26. setContentView(R.layout.activity_main);
    27. content=(Button)findViewById(R.id.content);
    28. image=(ImageView)findViewById(R.id.image);
    29. content.setOnClickListener(this);;
    30. image.setOnClickListener(this);;
    31. }
    32. /**
    33. * 获取网络图片
    34. * @param imageurl 图片网络地址
    35. * @return Bitmap 返回位图
    36. */
    37. public Bitmap GetImageInputStream(String imageurl){
    38. URL url;
    39. HttpURLConnection connection=null;
    40. Bitmap bitmap=null;
    41. try {
    42. url = new URL(imageurl);
    43. connection=(HttpURLConnection)url.openConnection();
    44. connection.setConnectTimeout(6000); //超时设置
    45. connection.setDoInput(true);
    46. connection.setUseCaches(false); //设置不使用缓存
    47. InputStream inputStream=connection.getInputStream();
    48. bitmap=BitmapFactory.decodeStream(inputStream);
    49. inputStream.close();
    50. } catch (Exception e) {
    51. e.printStackTrace();
    52. }
    53. return bitmap;
    54. }
    55. public void onClick(View v) {
    56. switch (v.getId()) {
    57. case R.id.content:
    58. //加入网络图片地址
    59. new Task().execute("http://pic.4j4j.cn/upload/pic/20130617/55695c3c95.jpg");
    60. break;
    61. case R.id.image:
    62. //点击图片后将图片保存到SD卡跟目录下的Test文件夹内
    63. SavaImage(bitmap, Environment.getExternalStorageDirectory().getPath()+"/Test");
    64. Toast.makeText(getBaseContext(), "图片保存", Toast.LENGTH_SHORT).show();
    65. break;
    66. default:
    67. break;
    68. }
    69. }
    70. Handler handler=new Handler(){
    71. public void handleMessage(android.os.Message msg) {
    72. if(msg.what==0x123){
    73. image.setImageBitmap(bitmap);
    74. }
    75. };
    76. };
    77. /**
    78. * 异步线程下载图片
    79. *
    80. */
    81. class Task extends AsyncTask<String, Integer, Void>{
    82. protected Void doInBackground(String... params) {
    83. bitmap=GetImageInputStream((String)params[0]);
    84. return null;
    85. }
    86. protected void onPostExecute(Void result) {
    87. super.onPostExecute(result);
    88. Message message=new Message();
    89. message.what=0x123;
    90. handler.sendMessage(message);
    91. }
    92. }
    93. /**
    94. * 保存位图到本地
    95. * @param bitmap
    96. * @param path 本地路径
    97. * @return void
    98. */
    99. public void SavaImage(Bitmap bitmap, String path){
    100. File file=new File(path);
    101. FileOutputStream fileOutputStream=null;
    102. //文件夹不存在,则创建它
    103. if(!file.exists()){
    104. file.mkdir();
    105. }
    106. try {
    107. fileOutputStream=new FileOutputStream(path+"/"+System.currentTimeMillis()+".png");
    108. bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
    109. fileOutputStream.close();
    110. } catch (Exception e) {
    111. e.printStackTrace();
    112. }
    113. }
    114. }

Android 下载网络图片保存到本地的更多相关文章

  1. Retrofit 下载网络图片 保存到本地

    private void downImage(String imagePath) { try { CommonV2Api.downloadFile(mContext, imagePath, new I ...

  2. C#抓取网络图片保存到本地

    C#抓取网络图片保存到本地 System.Net.WebClient myWebClient = new System.Net.WebClient(); //将头像保存到服务器 string virP ...

  3. C# 中从网络上下载文件保存到本地文件

    下面是C#中常用的从Internet上下载文件保存到本地的一些方法,没有太多的技巧. 1.通过  WebClient  类下载文件 WebClient webClient = new WebClien ...

  4. JAVA 通过url下载图片保存到本地

    //java 通过url下载图片保存到本地 public static void download(String urlString, int i) throws Exception { // 构造U ...

  5. android下载网络图片并缓存

    异步下载网络图片,并提供是否缓存至内存或外部文件的功能 异步加载类AsyncImageLoader public void downloadImage(final String url, final ...

  6. h5+的Downloader下载网络图片缓存到本地的案例

    之前展示图片都是通过<img src="网络图片地址"> , 每次都请求服务器, 加载比较慢;如何做到显示图片的时候先从本地获取,没有则联网下载,缓存到本地;下次直接从 ...

  7. android 下载网络图片并缓存

    异步下载网络图片,并提供是否缓存至内存或外部文件的功能 异步加载类AsyncImageLoader public void downloadImage(final String url, final ...

  8. java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)

    最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...

  9. android下载网络图片,设置宽高,等比缩放

    使用Picasso组件去下载图片会发现图片宽高会变形不受等比缩放控制,即使设置了图片的 scaleType,可能是对Picasso的api没有用对, Picasso.with(this.activit ...

随机推荐

  1. 如何在Infraworks中创建多树种组成的森林

    在Infraworks 2014中,你可以有shp文件导入生成树木和森林,也可以直接在模型中规划一片区域作为森林.美中不足的就是,这些充其量叫树林不能叫森林,因为他们的样式都是一个树种,而真正的森林肯 ...

  2. AWS EC2 复制实例后,自定义指标无法显示数据

    从一个实例创建了一个AMI,然后通过这个AMI创建新的EC2实例,结果发票自定义指标不会显示: 系统一直在邮件中提示: print() on closed filehandle MDATA at Cl ...

  3. '[<NSObject 0x8a4b500> setValue:forUndefinedKey:]

    Bug如下: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUnd ...

  4. Android AsyncTask 源码解析

    1. 官方介绍 public abstract class AsyncTask extends Object  java.lang.Object    ↳ android.os.AsyncTask&l ...

  5. 实战CENTOS6.5安装docker并创建asp.net mvc 5 镜像,运行MVC 网站

    Docker,容器,让研发.测试.生产同一环境,可在linux平台上混合使用JAVA与net 程序 Centos6.5安装docker 参考http://my.oschina.net/kcw/blog ...

  6. eclipse插件汇总

    subclipse http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 话说eclipse组织也出了一个svn的插件,但 ...

  7. 我参加了51CTO博客大赛,求投票!

    我是张传波,也是Fireball(火球). 我参加了51CTO博客大赛,距离网络投票截止没有几天了,求投票!我的参赛链接:http://blog.51cto.com/contest2013/82313 ...

  8. 开源游戏 “Elvish Bird”

    简介: 这个游戏是我在今年(2014/03)课余时闲着无聊做的一个冒险类小游戏,总共花了5个工作日才完成,为了游戏的效率,做了很多优化,目前在IE8以上浏览器能够流畅运行,运行时如果屏幕分辨率不兼容, ...

  9. [CMD]oracle数据库的导出导入

    除了推荐使用PL/SQL Developer 工具对oracle进行导出导入(http://www.cnblogs.com/whylaughing/p/5983490.html )之外,比较常用的还有 ...

  10. 【转载】Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...