網路圖片獲取並轉換為Base64字串
阿新 • • 發佈:2019-01-06
import sun.misc.BASE64Encoder; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Created by zhaomeng 2016/4/7. */ public class ImageUtil { public static String getURLImage(String imageUrl) throws Exception { //new一個URL物件 URL url = new URL(imageUrl); //開啟連結 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //設定請求方式為"GET" conn.setRequestMethod("GET"); //超時響應時間為5秒 conn.setConnectTimeout(5 * 1000); //通過輸入流獲取圖片資料 InputStream inStream = conn.getInputStream(); //得到圖片的二進位制資料,以二進位制封裝得到資料,具有通用性 byte[] data = readInputStream(inStream); BASE64Encoder encode = new BASE64Encoder(); String s = encode.encode(data); return s; } private static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); //建立一個Buffer字串 byte[] buffer = new byte[1024]; //每次讀取的字串長度,如果為-1,代表全部讀取完畢 int len = 0; //使用一個輸入流從buffer裡把資料讀取出來 while( (len=inStream.read(buffer)) != -1 ){ //用輸出流往buffer裡寫入資料,中間引數代表從哪個位置開始讀,len代表讀取的長度 outStream.write(buffer, 0, len); } //關閉輸入流 inStream.close(); //把outStream裡的資料寫入記憶體 return outStream.toByteArray(); } }