保存图片到本地目录和获取
2016-05-18 15:59
417 查看
因为是对互联网和内存操作,所以我们要添加如下权限: //代码如下所示: package com.itfom.getpicfromnet; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; @SuppressLint("HandlerLeak") public class MainActivity extends Activity { private ImageView iv_pic; private Button btn_get; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_get = (Button) findViewById(R.id.btn_get); iv_pic = (ImageView) findViewById(R.id.iv_img); //设置监听事件 btn_get.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //开启子线程 new Thread(){ public void run() { try { String urlPath = "http://pic7.nipic.com/20100607/4791134_172835008083_2.jpg"; URL url = new URL(urlPath); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(6*1000); // 注意要设置超时,设置时间不要超过10秒,避免被android系统回收 if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败"); InputStream inSream = conn.getInputStream(); //把图片保存到项目的根目录 readAsFile(inSream, new File(Environment.getExternalStorageDirectory()+"/"+"test.jpg")); Message msg=new Message(); msg.what=0; handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); } }; }.start(); } }); } public static void readAsFile(InputStream inSream, File file) throws Exception{ FileOutputStream outStream = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len = -1; while( (len = inSream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } outStream.close(); inSream.close(); } //创建Handler Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what==0){ //开始绑定数据 iv_pic.setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/test.jpg")); // 获取保存到根目录的图片并展示 } }; }; }
/** * 保存到本地文件 * @param inSream * @param file * @throws Exception * readAsFile(inSream, new File(Environment.getExternalStorageDirectory()+"/"+"test.jpg")); * iv_pic.setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/test.jpg")); 获取 */ public static void readAsFile(InputStream inSream, File file) throws Exception{ FileOutputStream outStream = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len = -1; while( (len = inSream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } outStream.close(); inSream.close(); }
权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
相关文章推荐
- SQL Server 2012 序列号
- ios学习--UIColor的你想知道的所有
- 【T_SQL】 基础 事务
- UIResponder
- Android模糊处理简单实现毛玻璃效果
- iOS开发_统计xcode代码行数
- Qt在Windows下的三种编程环境搭建
- Moco in action
- uva_10286_Trouble with a Pentagon
- C++中的4种类型转换方式
- HDoj 1004 Let the Balloon Rise
- aws 上使用EC2 搭建***
- Android应用退出登录的实现
- 只是插了一根网线,全网中断?
- CSS 经典案例 两列布局 左固定 右自适应 高度自适应
- PHP时间格式大全
- 如何学习嵌入式系统之基础知识
- unexpected element (uri:"", local:"sean:person"). Expected elements are <{http://sean.com}person>
- 模式识别(Pattern Recognition)学习笔记(八)--Fisher线性判别分析
- OAF调用Js代码