最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Java實現(xiàn)在線圖片URL轉(zhuǎn)換為Base64以及反向解析成圖片

 更新時間:2025年03月28日 09:09:05   作者:碼農(nóng)研究僧  
Base64 是一種將二進(jìn)制數(shù)據(jù)編碼為 ASCII 字符串格式的方法,常用于在網(wǎng)絡(luò)中安全傳輸圖片、文件等內(nèi)容,本文給大家介紹了如何利用Java實現(xiàn)在線圖片URL轉(zhuǎn)換為Base64以及反向解析成圖片,文章有相關(guān)的代碼和圖文供大家參考,需要的朋友可以參考下

1. 基本知識

Base64 是一種將二進(jìn)制數(shù)據(jù)編碼為 ASCII 字符串格式的方法,常用于在網(wǎng)絡(luò)中安全傳輸圖片、文件等內(nèi)容

  • 編碼后只包含 [A-Za-z0-9+/=],適合在文本協(xié)議中傳輸

  • 編碼后的內(nèi)容比原始內(nèi)容大約多出 33% 的體積

  • 常用于 HTML <img src="data:image/jpeg;base64,..."> 中內(nèi)嵌圖片、郵件傳輸、JWT 等

在線圖片 URL -> 下載圖片內(nèi)容 -> 轉(zhuǎn)為字節(jié)數(shù)組 -> Base64 編碼

  1. 利用 java.net.URL 獲取網(wǎng)絡(luò)資源
  2. 用 InputStream 讀取圖片數(shù)據(jù)
  3. 使用 Base64.getEncoder().encodeToString() 進(jìn)行編碼

但是Base64是無法轉(zhuǎn)化為在線鏈接的,只能解析成圖片下載下來而已!

類型能否轉(zhuǎn)化說明
URL → Base64? 可以直接讀取資源,轉(zhuǎn)為字節(jié)數(shù)組后編碼
Base64 → URL? 不行必須先上傳至某個圖床或服務(wù)器獲取新 URL

基本的轉(zhuǎn)化過程可以通過在線網(wǎng)址:https://www.toolhelper.cn/Image/Base64?tab=image

2. Demo

在線Url轉(zhuǎn)化為Base64的Demo如下:(只需要替換鏈接即可)

import java.io.*;
import java.net.URL;
import java.util.Base64;

public class ImageUtils {

    /**
     * 在線圖片 URL 轉(zhuǎn)為 Base64 字符串
     * @param imageUrl 圖片的在線地址
     * @return Base64 編碼字符串
     * @throws IOException 網(wǎng)絡(luò)異?;蜃x取失敗
     */
    public static String convertImageUrlToBase64(String imageUrl) throws IOException {
        URL url = new URL(imageUrl);
        try (InputStream is = url.openStream();
             ByteArrayOutputStream baos = new ByteArrayOutputStream()) {

            byte[] buffer = new byte[8192]; // 緩沖區(qū)
            int bytesRead;
            while ((bytesRead = is.read(buffer)) != -1) {
                baos.write(buffer, 0, bytesRead);
            }

            // 獲取字節(jié)數(shù)組并進(jìn)行 Base64 編碼
            byte[] imageBytes = baos.toByteArray();
            return Base64.getEncoder().encodeToString(imageBytes);
        }
    }

    // 示例入口
    public static void main(String[] args) throws IOException {
        String url = "https://example.com/image.jpg";
        String base64 = convertImageUrlToBase64(url);
        System.out.println("Base64 編碼結(jié)果:" + base64);
    }
}

截圖如下:

將 Base64 字符串保存為本地圖片文件(無法執(zhí)行):

import java.io.*;
import java.util.Base64;

public class Base64ToImage {

    /**
     * 將 Base64 編碼字符串轉(zhuǎn)為圖片并保存本地
     * @param base64Str 圖片的 Base64 字符串
     * @param outputPath 本地保存路徑,如 "output.jpg"
     * @throws IOException 寫入異常
     */
    public static void saveBase64ToImage(String base64Str, String outputPath) throws IOException {
        byte[] imageBytes = Base64.getDecoder().decode(base64Str);
        try (OutputStream os = new FileOutputStream(outputPath)) {
            os.write(imageBytes);
        }
    }

    // 示例入口
    public static void main(String[] args) throws IOException {
        String base64Str = "你的Base64編碼";
        saveBase64ToImage(base64Str, "output.jpg");
        System.out.println("圖片已保存至本地");
    }
}

截圖如下:

是因為 Java 中字符串字面量的最大長度為 65,535 個字符(字符數(shù),不是字節(jié)數(shù))。而一整段 Base64 編碼很容易超過這個限制,尤其是圖片

可以保存在外部文件中,然后通過 Java 讀取

import java.io.*;
import java.util.Base64;

public class Base64ToImage {

    /**
     * 從文本文件中讀取 Base64,并保存為圖片
     * @param base64FilePath 存儲 Base64 的 .txt 文件路徑
     * @param outputImagePath 輸出圖片路徑
     * @throws IOException
     */
    public static void convertBase64FileToImage(String base64FilePath, String outputImagePath) throws IOException {
        // 讀取 Base64 內(nèi)容
        StringBuilder sb = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(base64FilePath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
        }

        // 解碼并寫出圖片
        byte[] imageBytes = Base64.getDecoder().decode(sb.toString());
        try (OutputStream os = new FileOutputStream(outputImagePath)) {
            os.write(imageBytes);
        }
    }

    public static void main(String[] args) throws IOException {
        String base64File = "base64_image.txt";
        String outputPath = "restored.jpg";
        convertBase64FileToImage(base64File, outputPath);
        System.out.println("圖片還原成功!");
    }
}

截圖如下:

再者如果是通過接口傳輸,無需這樣子

考慮通過 HTTP 請求(如前端用 POST)傳遞 Base64 字符串,而非硬編碼在 Java 文件中

到此這篇關(guān)于Java實現(xiàn)在線圖片URL轉(zhuǎn)換為Base64以及反向解析成圖片的文章就介紹到這了,更多相關(guān)Java在線URL轉(zhuǎn)Base64內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot實現(xiàn)動態(tài)數(shù)據(jù)源切換的項目實踐

    SpringBoot實現(xiàn)動態(tài)數(shù)據(jù)源切換的項目實踐

    在實際開發(fā)過程中,我們經(jīng)常遇到需要同時操作多個數(shù)據(jù)源的情況,本文主要介紹了SpringBoot實現(xiàn)動態(tài)數(shù)據(jù)源切換的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • java網(wǎng)上商城開發(fā)之郵件發(fā)送功能(全)

    java網(wǎng)上商城開發(fā)之郵件發(fā)送功能(全)

    這篇文章主要介紹了java網(wǎng)上商城開發(fā)之郵件發(fā)送功能,第一部分介紹了環(huán)境配置,第二部分則介紹了具體實現(xiàn)代碼,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Spring Batch批處理框架使用解析

    Spring Batch批處理框架使用解析

    這篇文章主要介紹了Spring Batch批處理框架使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Elasticsearch配置文件示例示范

    Elasticsearch配置文件示例示范

    這篇文章主要為大家介紹了Elasticsearch配置文件的示例示范,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • java使用TimeZone將中國標(biāo)準(zhǔn)時間轉(zhuǎn)成時區(qū)值

    java使用TimeZone將中國標(biāo)準(zhǔn)時間轉(zhuǎn)成時區(qū)值

    這篇文章主要介紹了java使用TimeZone將中國標(biāo)準(zhǔn)時間轉(zhuǎn)成時區(qū)值的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Spring覆蓋容器中Bean的注解如何實現(xiàn)@OverrideBean

    Spring覆蓋容器中Bean的注解如何實現(xiàn)@OverrideBean

    文章介紹了在項目開發(fā)中如何通過偷梁換柱的方式重寫Spring容器中的內(nèi)置Bean,并指出了需要注意的兩點:1. 對應(yīng)的Bean應(yīng)基于接口注入;2. 如果不是基于接口注入,可以使用同包名同類名的方式重寫(可能存在潛在問題,不推薦),文章還強調(diào)了“基于接口編程”的好處
    2025-01-01
  • MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式

    MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式

    這篇文章主要介紹了MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • JAVA Log 日志級別和使用配置示例

    JAVA Log 日志級別和使用配置示例

    本文介紹了Java中主流的日志框架,包括Logback和Log4j2,并詳細(xì)解釋了日志級別及其使用場景,同時,還提供了配置示例和使用技巧,如正確的日志記錄方式、異常日志記錄、性能優(yōu)化以及環(huán)境特定的日志配置,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-11-11
  • java ant 配置及構(gòu)建項目圖文教程

    java ant 配置及構(gòu)建項目圖文教程

    以下是對java ant配置及構(gòu)建項目進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • mall整合SpringSecurity及JWT實現(xiàn)認(rèn)證授權(quán)實戰(zhàn)

    mall整合SpringSecurity及JWT實現(xiàn)認(rèn)證授權(quán)實戰(zhàn)

    這篇文章主要為大家介紹了mall整合SpringSecurity及JWT實現(xiàn)認(rèn)證授權(quán)實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論

巴林左旗| 沂源县| 佛教| 栾川县| 五原县| 泌阳县| 临安市| 阳高县| 上蔡县| 大丰市| 肃北| 江源县| 得荣县| 息烽县| 德江县| 乳源| 巧家县| 高青县| 北宁市| 乐至县| 内黄县| 黔西县| 荥经县| 行唐县| 嘉善县| 大荔县| 武安市| 莫力| 湄潭县| 开原市| 无为县| 筠连县| 昆明市| 井研县| 五家渠市| 西贡区| 张家港市| 公安县| 奉节县| 武威市| 吴旗县|