图片的下载和保存
来源:互联网 发布:修改手机型号软件大全 编辑:程序博客网 时间:2024/06/02 18:42
package com.outdoors.jinghuang.demo;import android.app.Activity;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;import org.w3c.dom.Text;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * Created by jing.huang on 2016/12/13. */public class DownLoadAndSaveImage extends Activity implements View.OnClickListener { private ImageView showImage; private ProgressBar loadProgress; private Button downLoadImageBt; private Button saveImageBt; private TextView showProgressTv; //图片的下载地址 private final String PATH = "http://img.my.csdn.net/uploads/201402/24/1393242467_3999.jpg"; private String fileName = "save_image.jpg";//保存图片的名字 private String savePath;//保存路径 private Bitmap bitmap; private static final int SAVE_SUCCESSFUL = 1001; private static final int SAVE_UNSUCCESSFUL = 1002; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.load_and_save_iamge); showImage = (ImageView) findViewById(R.id.show_image); loadProgress = (ProgressBar) findViewById(R.id.load_progress); downLoadImageBt = (Button) findViewById(R.id.down_load_image); saveImageBt = (Button) findViewById(R.id.save_iamge); showProgressTv = (TextView) findViewById(R.id.show_progress_tv); downLoadImageBt.setOnClickListener(this); saveImageBt.setOnClickListener(this); loadProgress.setVisibility(View.GONE); showProgressTv.setVisibility(View.GONE); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.down_load_image://下载图片 loadProgress.setVisibility(View.VISIBLE); showProgressTv.setVisibility(View.VISIBLE); downLoadImage(); break; case R.id.save_iamge://保存图片 saveImage(); break; default: break; } } /** * 保存图片 */ private void saveImage() { if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { Toast.makeText(this, "The sdCard cannot be used!", Toast.LENGTH_SHORT).show(); return; } //显示dialog dialog = new ProgressDialog(this); dialog.setTitle("保存图片"); dialog.setMessage("图片正在保存,请稍后"); dialog.setIndeterminate(true); dialog.show(); new Thread(new Runnable() { @Override public void run() { savePath = Environment.getExternalStorageDirectory() + "/save_image/"; Log.d("DownLoadAndSaveImage", "path :" + Environment.getExternalStorageDirectory().getPath()); File file = new File(savePath); if (!file.exists()) { file.mkdirs(); } File fileImage = new File(savePath + fileName); BufferedOutputStream bos = null; Message msg = mhandler.obtainMessage(); try { bos = new BufferedOutputStream(new FileOutputStream(fileImage)); bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);// msg.what = SAVE_SUCCESSFUL; mhandler.sendEmptyMessageDelayed(SAVE_SUCCESSFUL, 2000); } catch (FileNotFoundException e) {// msg.what = SAVE_UNSUCCESSFUL; mhandler.sendEmptyMessageDelayed(SAVE_UNSUCCESSFUL, 2000); } finally { if (bos != null) { try { bos.close(); bos = null; } catch (IOException e) { e.printStackTrace(); } } } } }).start(); } private Handler mhandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); dialog.dismiss(); switch (msg.what) { case SAVE_SUCCESSFUL: Toast.makeText(DownLoadAndSaveImage.this, "Image saved successful!", Toast.LENGTH_SHORT).show(); break; case SAVE_UNSUCCESSFUL: Toast.makeText(DownLoadAndSaveImage.this, "Image saved unsuccessful!", Toast.LENGTH_SHORT).show(); break; default: break; } } }; /** * 下载图片 */ private void downLoadImage() { MyAsyncTask myAsyncTask = new MyAsyncTask(); myAsyncTask.execute(PATH); } private class MyAsyncTask extends AsyncTask<String, Integer, Bitmap> { private int currentSize; private int currentProgress; @Override protected void onPreExecute() { super.onPreExecute(); loadProgress.setProgress(0); loadProgress.setMax(100); } @Override protected Bitmap doInBackground(String... strings) { InputStream inputStream = null; ByteArrayOutputStream baos = null; try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); int total = connection.getContentLength(); inputStream = connection.getInputStream(); baos = new ByteArrayOutputStream(); byte[] byteData = new byte[8]; int len = 0; while (true) { len = inputStream.read(byteData, 0, byteData.length); if (len < 0) { break; } currentSize += len; currentProgress = (int) (100 * currentSize / total); baos.write(byteData, 0, len); publishProgress(currentProgress); } byte[] bytes = baos.toByteArray(); bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); } catch (Exception e) { e.printStackTrace(); } finally { if (baos != null) { try { baos.close(); baos = null; } catch (IOException e) { e.printStackTrace(); } } if (inputStream != null) { try { inputStream.close(); inputStream = null; } catch (IOException e) { e.printStackTrace(); } } } return bitmap; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); loadProgress.setProgress(values[0]); showProgressTv.setText("已下载:" + currentProgress + "%"); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); loadProgress.setVisibility(View.GONE); showProgressTv.setVisibility(View.GONE); showImage.setImageBitmap(bitmap); } }}
0 0
- 图片的下载和保存
- 保存下载的图片
- 保存 取消 图片的修改 下载图片
- Unity3D图片的下载及保存
- java读取本地图片和下载可选择路径保存图片
- 下载图片并保存
- 图片的保存和显示
- ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
- AS3下载并保存图片
- 从服务器下载保存图片
- GCD下载保存图片 缓存
- scrapy 下载并保存图片
- Oracle数据库保存、下载图片
- [unity3d]下载网上的图片并保存到本地
- 封装保存、下载图片到本地的方法记录
- java下载并保存网页上的图片
- 下载保存的图片背景由透明变为黑色问题解决
- python 下载 保存 图片的urllib.urlretrieve()函数 简单用法
- LevelStreaming - UE4中的关卡流
- test
- IKanalyzer、ansj_seg、jcseg三种中文分词器的实战较量
- Lesson 8: 渲染框架
- Android开发——DatePicker和TimePicker时间选择器
- 图片的下载和保存
- Android开发——AlertDialog自定义对话框
- Oracle的下载、安装和配置
- MFC点击按钮,弹出另一个对话框
- 简单的通讯录——第二版(动态版)
- Shell脚本调用java程序 Example
- Jenkins部署
- jquery 学习笔记1
- MFC静态编译