1. 程式人生 > >java遠端獲取圖片生成base64串

java遠端獲取圖片生成base64串

說下背景,專案中遇到前端js獲取圖片發生跨域的問題,伺服器端又不支援匿名訪問,只能通過伺服器獲取圖片base64碼進行展示。程式碼如下:下載

Java程式碼 收藏程式碼
  1. /** 
  2.  * 遠端讀取image轉換為Base64字串 
  3.  * @param imgUrl 
  4.  * @return 
  5.  */
  6. private String Image2Base64(String imgUrl) {  
  7.     URL url = null;  
  8.     InputStream is = null;   
  9.     ByteArrayOutputStream outStream = null;  
  10.     HttpURLConnection httpUrl = null
    ;  
  11.     try{  
  12.         url = new URL(imgUrl);  
  13.         httpUrl = (HttpURLConnection) url.openConnection();  
  14.         httpUrl.connect();  
  15.         httpUrl.getInputStream();  
  16.         is = httpUrl.getInputStream();            
  17.         outStream = new ByteArrayOutputStream();  
  18.         //建立一個Buffer字串
  19.         byte
    [] buffer = newbyte[1024];  
  20.         //每次讀取的字串長度,如果為-1,代表全部讀取完畢
  21.         int len = 0;  
  22.         //使用一個輸入流從buffer裡把資料讀取出來
  23.         while( (len=is.read(buffer)) != -1 ){  
  24.             //用輸出流往buffer裡寫入資料,中間引數代表從哪個位置開始讀,len代表讀取的長度
  25.             outStream.write(buffer, 0, len);  
  26.         }  
  27.         // 對位元組陣列Base64編碼
  28.         return
    new BASE64Encoder().encode(outStream.toByteArray());  
  29.     }catch (Exception e) {  
  30.         e.printStackTrace();  
  31.     }  下載
  32.     finally{  
  33.         if(is != null)  
  34.         {  
  35.             try {  
  36.                 is.close();  
  37.             } catch (IOException e) {  
  38.                 e.printStackTrace();  
  39.             }  
  40.         }  
  41.         if(outStream != null)  
  42.         {  
  43.             try {  
  44.                 outStream.close();  
  45.             } catch (IOException e) {  
  46.                 e.printStackTrace();  
  47.             }  
  48.         }  
  49.         if(httpUrl != null)  
  50.         {  
  51.             httpUrl.disconnect();  
  52.         }  
  53.     }  
  54.     return imgUrl;