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

原创 2014年08月25日 13:17:23

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

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

<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 文件读取的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 向SD卡中创建或者删除的权限。 -->
<uses-permission android:name="andorid.permission.MONUN_UNMOUNT_FILESYSTEMS"/>
package com.xjw.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

	Button content;
	ImageView image;
	Bitmap bitmap;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		content=(Button)findViewById(R.id.content);
		image=(ImageView)findViewById(R.id.image);
		
		content.setOnClickListener(this);;
		image.setOnClickListener(this);;
	}
	
	/**
	 * 获取网络图片
	 * @param imageurl 图片网络地址
	 * @return Bitmap 返回位图
	 */
	public Bitmap GetImageInputStream(String imageurl){
		URL url;
		HttpURLConnection connection=null;
		Bitmap bitmap=null;
		try {
			url = new URL(imageurl);
			connection=(HttpURLConnection)url.openConnection();
			connection.setConnectTimeout(6000); //超时设置
			connection.setDoInput(true); 
			connection.setUseCaches(false); //设置不使用缓存
			InputStream inputStream=connection.getInputStream();
			bitmap=BitmapFactory.decodeStream(inputStream);
			inputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bitmap;
	}
	
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.content:
			//加入网络图片地址
			new Task().execute("http://pic.4j4j.cn/upload/pic/20130617/55695c3c95.jpg");
			break;
			
		case R.id.image:
			//点击图片后将图片保存到SD卡跟目录下的Test文件夹内
			SavaImage(bitmap, Environment.getExternalStorageDirectory().getPath()+"/Test");
			Toast.makeText(getBaseContext(), "图片保存", Toast.LENGTH_SHORT).show();
			break;
			
		default:
			break;
		}
	}
	
	Handler handler=new Handler(){
		public void handleMessage(android.os.Message msg) {
			if(msg.what==0x123){
				image.setImageBitmap(bitmap);
			}
		};
	};
	
	
	/**
	 * 异步线程下载图片
	 *
	 */
	class Task extends AsyncTask<String, Integer, Void>{

		protected Void doInBackground(String... params) {
			bitmap=GetImageInputStream((String)params[0]);
			return null;
		}
		
		protected void onPostExecute(Void result) {
			super.onPostExecute(result);
			Message message=new Message();
			message.what=0x123;
			handler.sendMessage(message);
		}
		
	}
	
	/**
	 * 保存位图到本地
	 * @param bitmap
	 * @param path 本地路径
	 * @return void
	 */
	public void SavaImage(Bitmap bitmap, String path){
		File file=new File(path);
		FileOutputStream fileOutputStream=null;
		//文件夹不存在,则创建它
		if(!file.exists()){
			file.mkdir();
		}
		try {
			fileOutputStream=new FileOutputStream(path+"/"+System.currentTimeMillis()+".png");
			bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
			fileOutputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


Android中保存图片到本地功能实现

文章转载自http://blog.csdn.net/ccpat/article/details/45314175  感谢原作者 本文描述将一个Bitmap对象保存为一个图片文件的主要步骤。保存的图...
  • Samuel__Liu
  • Samuel__Liu
  • 2016-02-25 23:56:56
  • 29348

Android异步下载图片并且缓存图片到本地

在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML资源,其中包括图片,我们要做的解析XML里面的...
  • lq18111292117
  • lq18111292117
  • 2016-10-28 11:29:06
  • 523

Android异步从网络下载图片并且缓存图片到本地的demo

在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML资源,其中包括图片,我们要做的解析XML里面的...
  • cndrip
  • cndrip
  • 2012-07-17 08:56:47
  • 18914

Android 保存Glide展示的图片到本地

在展示图片的时候,我们不仅仅需要把图片展示出来,往往还需要把图片下载到本地,这里举例取出Glide的GIF图片放到指定的文件目录,之前写过一篇如何加载GIF: Glide 加载gif图片 取出...
  • dhl_1986
  • dhl_1986
  • 2017-10-01 09:30:30
  • 1561

Android实现下载保存图片到本地并在相册中显示

  • 2018年02月08日 16:07
  • 49B
  • 下载

Android 把图片保存到本地相册

  • 2015年09月22日 08:47
  • 1.58MB
  • 下载

Android-okhttp下载图片并保存(刷新图库)

注意:下载和保存在子线程中进行。//注意:下载和保存在子线程中进行。 new Thread(new Runnable() { @Override ...
  • sinat_31057219
  • sinat_31057219
  • 2017-05-05 15:32:23
  • 2714

安卓 保存Bitmap图片至本地并获得本地路径

public void saveBitmap(Bitmap bitmap) { // 首先保存图片 File appDir = new File(Environment...
  • q9104422999
  • q9104422999
  • 2017-04-06 16:18:56
  • 2607

Android实现下载图片并保存到SD卡中

在文件里设置一个点击方法已进行点击下载: download.setOnClickListener(new View.OnClickListener() { @Override pub...
  • Android_yyx
  • Android_yyx
  • 2017-06-09 14:21:45
  • 2415

Android中保存图片到本地功能实现 .

初学Android时转载的文章,没想到还有很多人看,但是今天我才发现我这排版排的什么玩意啊,根本没法看!估计也耽误了很多人的时间!真的很对不住,写博客也是个细心的活,不能掺进偷懒的想法。 文...
  • qq_30427341
  • qq_30427341
  • 2016-10-17 11:23:59
  • 1337
收藏助手
不良信息举报
您举报文章:Android 下载网络图片保存到本地
举报原因:
原因补充:

(最多只允许输入30个字)