av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java圖片轉(zhuǎn)base64和真實(shí)的結(jié)果不一樣

瀏覽:127日期:2023-12-20 13:01:09

問(wèn)題描述

先上代碼

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)出來(lái)的結(jié)果無(wú)法用于img標(biāo)簽顯示(已加了data:image/jpeg;base64,前綴)。后來(lái)直接百度找了一個(gè)在線生成base64的網(wǎng)站,把這個(gè)圖片url放上去轉(zhuǎn)換,結(jié)果發(fā)現(xiàn)別人在線轉(zhuǎn)換出來(lái)的base64比我java代碼轉(zhuǎn)換的base64還長(zhǎng)了很多。

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

問(wèn)題解答

回答1:

InputStream 的 available() 返回的值是該InputStream 在不被阻塞的情況下,一次可以讀取到的數(shù)據(jù)長(zhǎng)度。但網(wǎng)絡(luò)情況總是不定的,經(jīng)常阻塞。所以建議使用循環(huán)讀取 InputStream 中的數(shù)據(jù)。

回答2:

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

ByteArrayOutputStream baos = new ByteArrayOutputStream();Streams.copy(conn.getInputStream(), baos);String str = new BASE64Encoder(baos.toByteArray());回答3:

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,就好了

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 91 久久| av毛片在线免费观看 | 国产一区视频在线 | 久久综合av | 99re视频在线免费观看 | 毛片一区 | 不用播放器看的av | 可以免费观看的av片 | 日韩成人精品一区二区三区 | 久久中文字幕一区 | 亚洲综合日韩精品欧美综合区 | 亚洲香蕉 | 亚洲精品一区二三区不卡 | 中午字幕在线观看 | 天堂影院av | 欧美一区二区三区,视频 | 国产91亚洲精品一区二区三区 | 成人免费视频在线观看 | 国产9 9在线 | 中文 | 亚洲精品av在线 | 天天艹逼网 | 中文字幕亚洲视频 | 久久久国产精品视频 | 九九热在线视频观看这里只有精品 | 欧美精品1区2区3区 精品国产欧美一区二区 | 免费视频一区二区 | 久久剧场 | 亚洲高清免费观看 | 在线免费观看a级片 | 欧美日韩国产中文 | 最新中文字幕在线 | 欧美在线视频一区 | 欧美啊v在线观看 | av一二三区| 中文字幕亚洲欧美日韩在线不卡 | 四虎影院新地址 | 欧美videosex性极品hd | 99精品久久 | 99热在线观看精品 | 成人精品一区二区三区中文字幕 | 国产精品高潮呻吟久久aⅴ码 |