欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-04-11 08:49:48
一、首先获取图片 //第一种获取图片的方法 //第二种获取图片的方法 二、保存图片 源码下载地址:https://download.csdn.net/download/daxudada/10272805 喜欢我的就关注我 ......

一、首先获取图片 

//第一种获取图片的方法

 1 String filePath = downloadUrl;
 2 //以下是取得图片的方法
 3 取得的是InputStream,直接从InputStream生成bitmap 
 4 mBitmap = BitmapFactory.decodeStream(getImageStream(filePath));
 5 
 6 public InputStream getImageStream(String path) throws Exception{
 7     URL url = new URL(path);
 8     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 9     conn.setConnectTimeout(5 * 1000);
10     conn.setRequestMethod("GET");
11     if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
12         return conn.getInputStream();
13     }
14     return null;
15 }

//第二种获取图片的方法

 1 String filePath = downloadUrl;
 2 //以下是取得图片的方法
 3 取得的是byte数组, 从byte数组生成bitmap
 4 byte[] data = getImage(filePath);
 5 if(data!=null){
 6     mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
 7 }else{
 8     Toast.makeText(MainActivity.this, "Image error!", Toast.LENGTH_SHORT).show();
 9 }
10 public byte[] getImage(String path) throws Exception{
11     URL url = new URL(path);
12     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
13     conn.setConnectTimeout(5 * 1000);
14     conn.setRequestMethod("GET");
15     InputStream inStream = conn.getInputStream();
16     if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
17         return readStream(inStream);
18     }
19     return null;
20 }
21 public static byte[] readStream(InputStream inStream) throws Exception{
22     ByteArrayOutputStream outStream = new ByteArrayOutputStream();
23     byte[] buffer = new byte[1024];
24     int len = 0;
25     while( (len=inStream.read(buffer)) != -1){
26         outStream.write(buffer, 0, len);
27     }
28     outStream.close();
29     inStream.close();
30     return outStream.toByteArray();
31 }

二、保存图片

 1 **
 2  * 保存bitmap到SD卡
 3  * @param bitmap
 4  */
 5 public void saveBitmapToSDCard(Bitmap bitmap) {
 6     FileOutputStream fos = null;
 7     try {
 8         fos = new FileOutputStream(picPath);//picPath为保存SD卡路径
 9         if (fos != null) {
10             bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
11             fos.close();
12         }
13     } catch (Exception e) {
14         e.printStackTrace();
15     }
16 }

源码下载地址:

喜欢我的就关注我