• Android 下载网络图片保存到本地


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

    首先需要在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.   
      1. package com.xjw.test;  
      2.   
      3. import java.io.File;  
      4. import java.io.FileOutputStream;  
      5. import java.io.InputStream;  
      6. import java.net.HttpURLConnection;  
      7. import java.net.URL;  
      8. import android.os.AsyncTask;  
      9. import android.os.Bundle;  
      10. import android.os.Environment;  
      11. import android.os.Handler;  
      12. import android.os.Message;  
      13. import android.app.Activity;  
      14. import android.graphics.Bitmap;  
      15. import android.graphics.BitmapFactory;  
      16. import android.view.View;  
      17. import android.view.View.OnClickListener;  
      18. import android.widget.Button;  
      19. import android.widget.ImageView;  
      20. import android.widget.Toast;  
      21.   
      22. public class MainActivity extends Activity implements OnClickListener{  
      23.   
      24.     Button content;  
      25.     ImageView image;  
      26.     Bitmap bitmap;  
      27.     protected void onCreate(Bundle savedInstanceState) {  
      28.         super.onCreate(savedInstanceState);  
      29.         setContentView(R.layout.activity_main);  
      30.         content=(Button)findViewById(R.id.content);  
      31.         image=(ImageView)findViewById(R.id.image);  
      32.           
      33.         content.setOnClickListener(this);;  
      34.         image.setOnClickListener(this);;  
      35.     }  
      36.       
      37.     /** 
      38.      * 获取网络图片 
      39.      * @param imageurl 图片网络地址 
      40.      * @return Bitmap 返回位图 
      41.      */  
      42.     public Bitmap GetImageInputStream(String imageurl){  
      43.         URL url;  
      44.         HttpURLConnection connection=null;  
      45.         Bitmap bitmap=null;  
      46.         try {  
      47.             url = new URL(imageurl);  
      48.             connection=(HttpURLConnection)url.openConnection();  
      49.             connection.setConnectTimeout(6000); //超时设置  
      50.             connection.setDoInput(true);   
      51.             connection.setUseCaches(false); //设置不使用缓存  
      52.             InputStream inputStream=connection.getInputStream();  
      53.             bitmap=BitmapFactory.decodeStream(inputStream);  
      54.             inputStream.close();  
      55.         } catch (Exception e) {  
      56.             e.printStackTrace();  
      57.         }  
      58.         return bitmap;  
      59.     }  
      60.       
      61.     public void onClick(View v) {  
      62.         switch (v.getId()) {  
      63.         case R.id.content:  
      64.             //加入网络图片地址  
      65.             new Task().execute("http://pic.4j4j.cn/upload/pic/20130617/55695c3c95.jpg");  
      66.             break;  
      67.               
      68.         case R.id.image:  
      69.             //点击图片后将图片保存到SD卡跟目录下的Test文件夹内  
      70.             SavaImage(bitmap, Environment.getExternalStorageDirectory().getPath()+"/Test");  
      71.             Toast.makeText(getBaseContext(), "图片保存", Toast.LENGTH_SHORT).show();  
      72.             break;  
      73.               
      74.         default:  
      75.             break;  
      76.         }  
      77.     }  
      78.       
      79.     Handler handler=new Handler(){  
      80.         public void handleMessage(android.os.Message msg) {  
      81.             if(msg.what==0x123){  
      82.                 image.setImageBitmap(bitmap);  
      83.             }  
      84.         };  
      85.     };  
      86.       
      87.       
      88.     /** 
      89.      * 异步线程下载图片 
      90.      * 
      91.      */  
      92.     class Task extends AsyncTask<String, Integer, Void>{  
      93.   
      94.         protected Void doInBackground(String... params) {  
      95.             bitmap=GetImageInputStream((String)params[0]);  
      96.             return null;  
      97.         }  
      98.           
      99.         protected void onPostExecute(Void result) {  
      100.             super.onPostExecute(result);  
      101.             Message message=new Message();  
      102.             message.what=0x123;  
      103.             handler.sendMessage(message);  
      104.         }  
      105.           
      106.     }  
      107.       
      108.     /** 
      109.      * 保存位图到本地 
      110.      * @param bitmap 
      111.      * @param path 本地路径 
      112.      * @return void 
      113.      */  
      114.     public void SavaImage(Bitmap bitmap, String path){  
      115.         File file=new File(path);  
      116.         FileOutputStream fileOutputStream=null;  
      117.         //文件夹不存在,则创建它  
      118.         if(!file.exists()){  
      119.             file.mkdir();  
      120.         }  
      121.         try {  
      122.             fileOutputStream=new FileOutputStream(path+"/"+System.currentTimeMillis()+".png");  
      123.             bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);  
      124.             fileOutputStream.close();  
      125.         } catch (Exception e) {  
      126.             e.printStackTrace();  
      127.         }  
      128.     }  
  • 相关阅读:
    初学vue,vue2.0+vue-router+vuex的小项目
    解决安卓键盘将下面元素顶上来的问题
    ng1 与 vue 状态管理比较--个人理解
    js数组内元素移动,适用于拖动排序
    vuex--mutation,action个人理解
    git--删除.DS_Store
    app的设计 有感
    transformClassesWithDexForArmv7Debug --解决办法
    :mergeArmv7DebugResources:Some file crunching failed, see logs for details解决办法
    CET-6 分频周计划生词筛选(Week 2)
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6237943.html
Copyright © 2020-2023  润新知