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 }
源码下载地址:
喜欢我的就关注我