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

首先需要在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. firefox中flash经常崩溃

    建议: 1.安装flashblck插件 2.添加配置文件 在C:\Windows\SysWOW64\Macromed\Flash添加mmc.cfg. mmc.cfg的内容: SlientAutoUpd ...

  2. Nmap源码分析(脚本引擎)

    Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...

  3. .Net关闭数据库连接时判断ConnectionState为Open还是Closed?

    两种写法: if (conn.State == System.Data.ConnectionState.Open)            {                conn.Close();  ...

  4. 100个高质量Java开发者博客

    ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表.欢迎你也参与推荐优质的Java开发博客.(声明一下:我们的数学不是体育老师教的!:) ...

  5. ios 怎么解决Could not find Developer Disk Image

  6. iOS中的小知识点

    1.tableView隐藏滚动条 self.tableView.showsVerticalScrollIndicator = NO; 2.关于属性     使用assign: 对基础数据类型 (NSI ...

  7. UITableView全面解析

    本文转自:http://www.cocoachina.com/ios/20140922/9710.html 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以 ...

  8. 使用sencha cmd 一键生成你的应用程序代码

    一键生成你的应用程序代码: ------------------------------------------------------------ 我们的出发点就是使用命令来产生一个应用程序,执行以 ...

  9. linux下安装jdk+tomcat+eclipse+mysql

    我的环境:主机是win7的,虚拟机是VWare  Workstation 6.0   ,linux系统为Red Hat Enterprise  Linux 5 64位 各软件版本:jdk是jdk-6u ...

  10. MVC3异常处理的方法

    1.采用内置的HandleErrorAttribute对象,跳转到指定错误页 示例:http://www.cnblogs.com/TomXu/archive/2011/12/15/2285432.ht ...