色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:134日期: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)文章:
主站蜘蛛池模板: 欧美特黄高清免费观看的 | 三级黄网 | 亚洲成人综合在线 | 欧美一级视 | 色www永久免费网站国产 | 2022免费国产精品福利在线 | 中文字幕在线免费观看 | 男人天堂手机在线 | 午夜精品影院 | 看久久久久毛片婷婷色 | 亚洲性久久久影院 | 国产91av在线 | 看中国毛片 | 欧美成人免费公开播放 | 久久两性视频 | 一本一道久久综合狠狠老 | 欧美自拍视频 | 亚洲精品一区二区四季 | 国产亚洲精品久久久久久无 | a级精品九九九大片免费看 a级毛片免费观看网站 | 手机看片99 | 91人碰| 91色老99久久九九爱精品 | a级做爰视频免费观看 | 久草久在线 | 日韩一级片 韩国 | 精品网址 | 免费高清一级欧美片在线观看 | 亚洲日韩视频免费观看 | 视频一区 欧美 | 农村寡妇特一级毛片 | 一区二区三区四区产品乱码伦 | 在线免费精品视频 | japanese色系tube护士 | 国产伦子伦视频免费 | 欧美色穴 | 日韩国产午夜一区二区三区 | 久草热久草视频 | 一级特黄欧美 | 国产高清视频在线播放 | 在线一区播放 |