亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

java圖片轉(zhuǎn)base64和真實(shí)的結(jié)果不一樣
迷茫
迷茫 2017-04-18 10:56:39
0
3
924

先上代碼

        String imgURL = "http://www.g3zj.net:8082/util.action?method=appauthimg&d_=99";

        byte[] data = null;
        try {
            // 創(chuàng)建URL
            URL url = new URL(imgURL);
            // 創(chuàng)建鏈接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5 * 1000);
            InputStream inStream = conn.getInputStream();
            data = new byte[inStream.available()];
            inStream.read(data);
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 對(duì)字節(jié)數(shù)組Base64編碼
        BASE64Encoder encoder = new BASE64Encoder();
        str=encoder.encode(data);

就是從一個(gè)網(wǎng)絡(luò)讀取圖片並轉(zhuǎn)成base64.發(fā)現(xiàn)轉(zhuǎn)出來的結(jié)果無法用於img標(biāo)簽顯示(已加了data:image/jpeg;base64,前綴)。
後來直接百度找了一個(gè)在線生成base64的網(wǎng)站,把這個(gè)圖片url放上去轉(zhuǎn)換,
結(jié)果發(fā)現(xiàn)別人在線轉(zhuǎn)換出來的base64比我java代碼轉(zhuǎn)換的base64還長了很多。

為什麼會(huì)這樣呢?

迷茫
迷茫

業(yè)精于勤,荒于嬉;行成于思,毀于隨。

全部回覆(3)
黃舟

InputStream 的 available() 傳回的值是該InputStream 在不被阻塞的情況下,一次可以讀取到的資料長度。但網(wǎng)路情況總是不定的,常常阻塞。所以建議使用循環(huán)讀取 InputStream 中的資料。

伊謝爾倫

讀取整個(gè)InputStream時(shí),用Streams.copy()比穩(wěn),例如題主這個(gè)例子中,可以是:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Streams.copy(conn.getInputStream(), baos);
String str = new BASE64Encoder(baos.toByteArray());
巴扎黑
 String imgURL = "http://www.g3zj.net:8082/util.action?method=appauthimg&d_=99";
        ByteArrayOutputStream data = new ByteArrayOutputStream();
        try {
            // 創(chuàng)建URL
            URL url = new URL(imgURL);
            byte[] by = new byte[1024];
            // 創(chuàng)建鏈接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5 * 1000);
            InputStream is = conn.getInputStream();
            // 將內(nèi)容讀取內(nèi)存中
            int len = -1;
            while ((len = is.read(by)) != -1) {
                data.write(by, 0, len);
            }
            // 關(guān)閉流
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 對(duì)字節(jié)數(shù)組Base64編碼
        BASE64Encoder encoder = new BASE64Encoder();
        System.out.println("data:image/jpg;base64,"+encoder.encode(data.toByteArray()));

然而樓主的程式碼是可以用的,在我這裡,只要加上data:image/jpg;base64,就好了

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板