Java將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問(wèn)題
將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream
private static InputStream getImageStream(String url) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
return inputStream;
}
} catch (IOException e) {
log.info("獲取網(wǎng)絡(luò)圖片出現(xiàn)異常,圖片路徑為:" + url);
e.printStackTrace();
}
return null;
}Java將圖片轉(zhuǎn)成Base64
在日常的開(kāi)發(fā)中,圖片展示是一個(gè)經(jīng)常見(jiàn)的開(kāi)發(fā)任務(wù),而圖片展示也有好多種方式。
但也有一種是通過(guò)轉(zhuǎn)成Base64編碼來(lái)完成。
下面就是通過(guò)流轉(zhuǎn)成Base64編碼的主要代碼。
try (InputStream in = null;
? ? ?ByteArrayOutputStream out = new ByteArrayOutputStream()) {
? ? ?? ??? ?//建一個(gè)空的字節(jié)數(shù)組
? ? ? ? ? ? byte[] result = null;
? ?? ??? ??? ?in=.........(獲取你的圖片的輸入流)
? ? ? ? ? ? byte[] buf = new byte[1024];
? ? ?? ??? ?//用來(lái)定義一個(gè)準(zhǔn)備接收?qǐng)D片總長(zhǎng)度的局部變量
? ? ? ? ? ? int len;
? ? ?? ??? ?//將流的內(nèi)容讀取到buf內(nèi)存中
? ? ? ? ? ? while ((len = in.read(buf)) > 0) {
? ? ? ? ? ? ? ? //將buf內(nèi)存中的內(nèi)容從0開(kāi)始到總長(zhǎng)度輸出出去
? ? ? ? ? ? ? ? out.write(buf, 0, len);
? ? ? ? ? ? }
? ? ?? ??? ?//將out中的流內(nèi)容拷貝到一開(kāi)始定義的字節(jié)數(shù)組中
? ? ? ? ? ? result = out.toByteArray();
? ? ?? ??? ?//通過(guò)util包中的Base64類(lèi)對(duì)字節(jié)數(shù)組進(jìn)行base64編碼
? ? ? ? ? ? String base64 = Base64.getEncoder().encodeToString(result);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }以上就是Java轉(zhuǎn)成Base64的主要邏輯代碼,剩下的就是將這段邏輯套入到你自己的代碼里面。
注:如果需要返回到前端展示則需要加上一個(gè)前綴:
String code = "data:Image/" + "你的圖片格式(例如:JPG/PNG)等等" + ";base64," + base64;
如果前端需要展示圖片,就將code返回給前端。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks)
這篇文章主要介紹了Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Java實(shí)現(xiàn)二維碼、條形碼功能(案例代碼)
ZXing是一個(gè)開(kāi)放源碼的,用Java實(shí)現(xiàn)的多種格式的1D/2D條碼圖像處理庫(kù),它包含了聯(lián)系到其他語(yǔ)言的端口,Zxing可以實(shí)現(xiàn)使用手機(jī)的內(nèi)置的攝像頭完成條形碼的掃描及解碼,這篇文章主要介紹了Java實(shí)現(xiàn)二維碼、條形碼等功能,需要的朋友可以參考下2024-01-01
Java中==與equals()及hashcode()三者之間的關(guān)系詳解
最近也是在讀Hollis的《深入理解Java核心技術(shù)》里面一節(jié)講到了equals()和hashcode()的關(guān)系,對(duì)于這個(gè)高頻面試點(diǎn),咱們需要認(rèn)真理清一下幾者之間的關(guān)系2022-10-10
Kafka producer端開(kāi)發(fā)代碼實(shí)例
這篇文章主要介紹了Kafka producer端開(kāi)發(fā)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用
這篇文章主要介紹了spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
java application maven項(xiàng)目打自定義zip包實(shí)例(推薦)
下面小編就為大家?guī)?lái)一篇java application maven項(xiàng)目打自定義zip包實(shí)例(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Java集合去重導(dǎo)致的線(xiàn)上問(wèn)題
這篇文章主要介紹了Java集合去重導(dǎo)致的線(xiàn)上問(wèn)題,根據(jù)主題提出Set是怎樣保證數(shù)據(jù)的唯一性的,為什么兩種去重方式性能差距這么大的問(wèn)題,下文解決思路需要的小伙伴可以參考一下2022-04-04
關(guān)于SpringBoot中Ajax跨域以及Cookie無(wú)法獲取丟失問(wèn)題
這篇文章主要介紹了關(guān)于SpringBoot中Ajax跨域以及Cookie無(wú)法獲取丟失問(wèn)題,本文具有參考意義,遇到相同或者類(lèi)似問(wèn)題的小伙伴希望可以從中找到靈感2023-03-03

