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

首先需要在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. Round in Oracle/VBA

    VBA的 Round采用的是银行家算法(rounds to the nearest even number) Round(1.5) = 2 Round(0.5) = 在Oracle中实现银行家算法 S ...

  2. ECMAScript对文件夹图片幻灯片播放

    代码如下: var curContext = null; var curWeb = null; var picListTitle = "PictureLib"; var folde ...

  3. Android TextView走马灯效果

    布局: <TextView android:id="@+id/myTextView" android:layout_width="match_parent" ...

  4. SQL for SQLite

    语法 verb + subject + predicate commannds(命令) SQL由命令组成,以分号为结束.命令有token组成,token由white space分隔,包括空格.tab. ...

  5. Vysor:在电脑里控制你的安卓手机

    Vysor是一款可以使用电脑操作安卓手机的谷歌浏览器插件,在chrome中安装了Vysor插件以后,用户就可以使用电脑打开手机的屏幕,在手机的屏幕界面中,用户不仅可以观看,甚至可以使用电脑直接操作手机 ...

  6. MojoDatabase 源码学习之对象映射

    Mojo-database是我个人比较喜欢多开源项目,下文是该项目打介绍和地址: mojo-database 简介: MojoDatabase is an ActiveRecord-like ORM ...

  7. .NET(C#):await返回Task的async方法

    众所周知,async方法只可以返回void,Task和Task<T>. 对于返回void的async方法,它并不是awaitable,所以其他方法不能用await方法来调用它,而返回Tas ...

  8. 使用开源免费类库在.net中操作Excel

    自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍. 主要找到以下类库: MyXls(http://sourceforge.net/proj ...

  9. css hover对其包含的元素进行样式设置

    <ul class="icon-down-single-arr-li"> <li> <a href="javascript:void(0)& ...

  10. SQL Server连接SQL Server、SQL Server连接ORACLE 链接服务器

    夸数据库访问有很多种方式,其中部分用作接口访问,这里要介绍的是MSSQL访问另一台MSSQL,MSSQL访问ORACLE,其它暂不介绍. 1.MSSQL访问另一台MSSQL: a.展开服务器对象--& ...