1. 程式人生 > >網路圖片獲取並轉換為Base64字串

網路圖片獲取並轉換為Base64字串

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();
    }
}