国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java使用hutool把服務(wù)器圖片鏈接轉(zhuǎn)為base64編碼

這篇具有很好參考價值的文章主要介紹了java使用hutool把服務(wù)器圖片鏈接轉(zhuǎn)為base64編碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需求是把服務(wù)器的圖片鏈接或者網(wǎng)上的圖片鏈接地址轉(zhuǎn)為base64位編碼方便前端操作

建議使用方法一

base64編碼轉(zhuǎn)為圖片在線網(wǎng)址
https://imgtobase64.d777.com/文章來源地址http://www.zghlxwxcb.cn/news/detail-522288.html

方法一:使用hutool的HttpResponse方法

1.1 引入依賴

<dependency>
   <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.22</version>
</dependency>

1.2 代碼


import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import sun.misc.BASE64Encoder;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author ekkcole
 * @remark 圖片鏈接轉(zhuǎn)為base64編碼
 */
public class UrlToBase64Util {
	
	//base64前綴
	private static final String BASE64_PREFIX="data:image/png;base64,";

	public static void main(String[] args) throws Exception {
		String url="https://localhost:8080/upload/file/20221101/test.png";
		System.out.println(BASE64_PREFIX+imageUrlToBase64(url));
	}

	/**
	 * 圖片URL轉(zhuǎn)Base64編碼
	 *
	 * @param imgUrl 圖片URL
	 * @return Base64編碼
	 */
	public static String imageUrlToBase64(String imgUrl) {
		InputStream is = null;
		ByteArrayOutputStream outStream = null;
		try {
			if (!ObjectUtils.isEmpty(imgUrl)) {
				HttpResponse res = HttpRequest.get(imgUrl).execute();
				// 獲取輸入流
				is = res.bodyStream();
				outStream = new ByteArrayOutputStream();
				//創(chuàng)建一個Buffer字符串
				byte[] buffer = new byte[1024];
				//每次讀取的字符串長度,如果為-1,代表全部讀取完畢
				int len = 0;
				//使用輸入流從buffer里把數(shù)據(jù)讀取出來
				while ((len = is.read(buffer)) != -1) {
					//用輸出流往buffer里寫入數(shù)據(jù),中間參數(shù)代表從哪個位置開始讀,len代表讀取的長度
					outStream.write(buffer, 0, len);
				}
				// 對字節(jié)數(shù)組Base64編碼
				return encode(outStream.toByteArray());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (is != null) {
					is.close();
				}
				if (outStream != null) {
					outStream.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	/**
	 * 圖片轉(zhuǎn)字符串
	 *
	 * @param image 圖片Buffer
	 * @return Base64編碼
	 */
	public static String encode(byte[] image) {
		BASE64Encoder decoder = new BASE64Encoder();
		return replaceEnter(decoder.encode(image));
	}

	/**
	 * 字符替換
	 *
	 * @param str 字符串
	 * @return 替換后的字符串
	 */
	public static String replaceEnter(String str) {
		String reg = "[\n-\r]";
		Pattern p = Pattern.compile(reg);
		Matcher m = p.matcher(str);
		return m.replaceAll("");
	}
}

方法二:使用自帶的請求,有的網(wǎng)址會報錯,建議用第一種


import org.springframework.util.ObjectUtils;
import sun.misc.BASE64Encoder;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UrlToBase64 {

	//base64前綴
	private static final String BASE64_PREFIX="data:image/png;base64,";

	public static void main(String[] args) throws Exception {
		String url="https://localhost:8080/upload/file/20221101/test.png";
		System.out.println(BASE64_PREFIX+imageUrlToBase64(url));
	}

    /**
     * 圖片URL轉(zhuǎn)Base64編碼
     * @param imgUrl 圖片URL
     * @return Base64編碼
     */
    public static String imageUrlToBase64(String imgUrl) {
        URL url = null;
        InputStream is = null;
        ByteArrayOutputStream outStream = null;
        HttpURLConnection httpUrl = null;

        try {
			if (!ObjectUtils.isEmpty(imgUrl)) {
				// 如果服務(wù)器圖片地址帶有中文,最好處理一下
				String[] argss = imgUrl.split("/");
				String name1 = argss[argss.length - 1];
				String name2 = java.net.URLEncoder.encode(name1, "utf-8");
				// 處理中文名
				String newUrl = imgUrl.replace(name1, name2);
				url = new URL(newUrl);
				httpUrl = (HttpURLConnection) url.openConnection();
				httpUrl.connect();
				httpUrl.getInputStream();

				is = httpUrl.getInputStream();
				outStream = new ByteArrayOutputStream();

				//創(chuàng)建一個Buffer字符串
				byte[] buffer = new byte[1024];
				//每次讀取的字符串長度,如果為-1,代表全部讀取完畢
				int len = 0;
				//使用輸入流從buffer里把數(shù)據(jù)讀取出來
				while ((len = is.read(buffer)) != -1) {
					//用輸出流往buffer里寫入數(shù)據(jù),中間參數(shù)代表從哪個位置開始讀,len代表讀取的長度
					outStream.write(buffer, 0, len);
				}
				// 對字節(jié)數(shù)組Base64編碼
				return encode(outStream.toByteArray());
			}
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(is != null) {
                    is.close();
                }
                if(outStream != null) {
                    outStream.close();
                }
                if(httpUrl != null) {
                    httpUrl.disconnect();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return null;
    }

    /**
     * 圖片轉(zhuǎn)字符串
     * @param image 圖片Buffer
     * @return Base64編碼
     */
    public static String encode(byte[] image){
        BASE64Encoder decoder = new BASE64Encoder();
        return replaceEnter(decoder.encode(image));
    }

    /**
     * 字符替換
     * @param str 字符串
     * @return 替換后的字符串
     */
    public static String replaceEnter(String str){
        String reg ="[\n-\r]";
        Pattern p = Pattern.compile(reg);
        Matcher m = p.matcher(str);
        return m.replaceAll("");
    }


}

到了這里,關(guān)于java使用hutool把服務(wù)器圖片鏈接轉(zhuǎn)為base64編碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue 如何使用WebSocket與服務(wù)器建立鏈接 持續(xù)保持通信

    瀏覽器通過JavaScript向服務(wù)器發(fā)出建立WebSocket鏈接的請求,鏈接建立后,客戶端和服務(wù)器端就可以通過TCP鏈接直接交互數(shù)據(jù)。WebSocket鏈接后可以通過 send() 方法來向服務(wù)器發(fā)送數(shù)據(jù),并通過 onnessage 事件來接受服務(wù)器返回的數(shù)據(jù)。 WebSocket - Web API 接口參考 | MDN

    2024年01月18日
    瀏覽(24)
  • 【Ubuntu】ubuntu22.04使用VNC鏈接服務(wù)器遠程桌面

    【Ubuntu】ubuntu22.04使用VNC鏈接服務(wù)器遠程桌面

    本地主要需要一個VNC客戶端,用來遠程連接服務(wù)器端的VNC(在不安裝Web版本VNC情況下)。VNC客戶端下載地址: VNC客戶端下載 在遠程服務(wù)器控制臺中安裝Xfce桌面(這個桌面環(huán)境比較輕量化,博主用的88塊錢的騰訊云服務(wù)器) 注意更新軟件源 在遠程服務(wù)器控制臺中安裝 tightvn

    2024年02月03日
    瀏覽(29)
  • 圖片存儲解決方案之一使用nginx搭建圖片服務(wù)器(一)

    圖片存儲解決方案之一使用nginx搭建圖片服務(wù)器(一)

    常見的圖片存儲方案: 方案一:使用nginx搭建圖片服務(wù)器 方案二:使用開源的分布式文件存儲系統(tǒng),例如Fastdfs、HDFS等 方案三:使用云存儲,例如阿里云、七牛云等 首先下載Nginx http://nginx.org/en/download.html http://nginx.org/en/download.html?login=from_csdn ? ?然后解壓,如下圖所示: 雙

    2024年02月16日
    瀏覽(37)
  • Android使用Glide類加載服務(wù)器中的圖片

    Glide類用于從服務(wù)器中獲取圖片并加載進ImageView。 一、添加依賴 Glide為 第三方框架 ,使用時需添加依賴: 在 Gradle Scripts / build.gradle(Module:app) / dependencies方法 中添加 添加后會下載。 二、獲取權(quán)限 獲取服務(wù)器中的圖片需要 申請(靜態(tài)聲明)網(wǎng)絡(luò)權(quán)限 ,在清單文件中添加 三、

    2024年02月06日
    瀏覽(26)
  • vue2使用 tinymce富文本編輯器-圖片上傳、粘貼圖片上傳致服務(wù)器

    1.安裝tinymce富文本編輯器插件 npm i tinymce npm i @tinymce/tinymce-vue 2.創(chuàng)建Editor.js文件 封裝組件 以便使用 3.漢化包 (我放在public/tynymce/langs文件夾里) 4.vue組件中使用 本次記錄重點在于 上傳圖片方法 需要區(qū)分工具欄中圖片上傳方法 以及 粘貼進去的圖片也需要走上傳方法。兩個方

    2024年02月09日
    瀏覽(97)
  • 手把手教你如何使用Unity搭建簡易圖片服務(wù)器

    手把手教你如何使用Unity搭建簡易圖片服務(wù)器

    目錄 引言 服務(wù)器 WAMP簡介 WAMP的配置與使用 主要的WAMP集成環(huán)境有: 正文 1、外部工具素材準備 首先下載并安裝 WAMP? 圖片路徑設(shè)置 2、創(chuàng)建 Unity 工程 將圖片加載到 Unity 項目中: 代碼塊 運行效果如下: 網(wǎng)絡(luò)游戲中,服務(wù)器的搭建尤為重要,無論是授權(quán)服務(wù)器,還是非授權(quán)服務(wù)

    2024年02月02日
    瀏覽(188)
  • Vue中實現(xiàn)圖片上傳,上傳后的圖片回顯,存儲圖片到服務(wù)器 【使用對象存儲OSS】

    Vue中實現(xiàn)圖片上傳,上傳后的圖片回顯,存儲圖片到服務(wù)器 【使用對象存儲OSS】

    前言 以下只提供一種思路,對新手可能不太友好。 這里將前端Vue上傳的圖片直接存儲到服務(wù)器上, Alibaba Cloud OSS : 阿里云對象存儲服務(wù)(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務(wù)。您可以在任何應(yīng)用、任何時間、任何地點存儲

    2024年02月06日
    瀏覽(124)
  • Java教程:如何讀取服務(wù)器文件并推送到前端并下載,圖片格式以瀏覽器渲染模式

    Java教程:如何讀取服務(wù)器文件并推送到前端并下載,圖片格式以瀏覽器渲染模式

    ----在我們做文件上傳時,通常會保存文件的相對路徑在數(shù)據(jù)庫中,然后返回前端http訪問路徑,來對文件進行下載或圖片預(yù)覽功能,但是有時候我們并不想直接返回文件訪問地址給前端,這就用到了Java當中的文件輸入輸出流,將文件以流的方式響應(yīng)給瀏覽器,并渲染出圖片或

    2024年02月03日
    瀏覽(29)
  • SQL Server鏈接服務(wù)器

    SQL Server鏈接服務(wù)器

    SQL Server 中存在可以鏈接到其他服務(wù)器的選項,一般情況下是用來與別的 SQL Server 數(shù)據(jù)庫相連接,但是有時候也可以與一個Microsoft?Access數(shù)據(jù)庫?相連接。這樣的操作是通過鏈接服務(wù)器節(jié)點實現(xiàn)的。 鏈接服務(wù)器節(jié)點可以連接到另一個數(shù)據(jù)庫,通常/通常在不同的機器上運行,也

    2023年04月09日
    瀏覽(23)
  • SecureCRT ssh鏈接服務(wù)器

    SecureCRT ssh鏈接服務(wù)器

    說明: 一般的密碼方式登錄容易被密碼暴力破解。所以一般我們會將 SSH 的端口設(shè)置為默認22以外的端口,或者禁用root賬戶登錄。其實可以通過密鑰登錄這種方式來更好地保證安全。 密鑰形式登錄的原理是:利用密鑰生成器制作一對密鑰——一只公鑰和一只私鑰。將公鑰添加

    2024年02月09日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包