Android 下载网络图片保存到本地
程序员文章站
2022-12-25 15:30:36
通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地。
首先需要在manifest上添加一些权限:
package com.xjw.test;...
通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地。
首先需要在manifest上添加一些权限:
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("https://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{ 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(); } } }