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

Java - 將base64編碼解碼成圖片

這篇具有很好參考價(jià)值的文章主要介紹了Java - 將base64編碼解碼成圖片。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

為了方便測(cè)試,我們可以使用一個(gè)圖片編碼網(wǎng)站,將圖片進(jìn)行base64編碼

解密的代碼如下

public static String generateImage(String base64, String path) {
 ? ?// 解密
 ? ?try {
 ? ? ?String savePath = "/**/imgtest/";
 ? ? ?// 圖片分類(lèi)路徑+圖片名+圖片后綴
 ? ? ?String imgClassPath = path.concat(UUID.randomUUID().toString()).concat(".jpg");
?
 ? ? ?// 去掉base64前綴 data:image/jpeg;base64,
 ? ? ?base64 = base64.substring(base64.indexOf(",", 1) + 1);
 ? ? ?// 解密,解密的結(jié)果是一個(gè)byte數(shù)組
 ? ? ?Base64.Decoder decoder = Base64.getDecoder();
 ? ? ?byte[] imgbytes = decoder.decode(base64);
 ? ? ?for (int i = 0; i < imgbytes.length; ++i) {
 ? ? ? ?if (imgbytes[i] < 0) {
 ? ? ? ? ?imgbytes[i] += 256;
 ? ? ?  }
 ? ?  }
 ? ? ?
 ? ? ?// 保存圖片
 ? ? ?OutputStream out = new FileOutputStream(savePath.concat(imgClassPath));
 ? ? ?out.write(imgbytes);
 ? ? ?out.flush();
 ? ? ?out.close();
 ? ? ?// 返回圖片的相對(duì)路徑 = 圖片分類(lèi)路徑+圖片名+圖片后綴
 ? ? ?return imgClassPath;
 ?  } catch (IOException e) {
 ? ? ?return null;
 ?  }
}

因?yàn)閳D片的Base64字符串非常大,動(dòng)輒幾百K,所以不能直接使用String base64 = "${該圖片的base64串}"進(jìn)行測(cè)試,否則編譯器會(huì)報(bào)錯(cuò)Java "constant string too long" compile error"。這個(gè)錯(cuò)誤的出現(xiàn),是因?yàn)樽址A恐档拈L(zhǎng)度超過(guò)了65534,編譯期檢查沒(méi)通過(guò)。運(yùn)行時(shí)不存在這個(gè)限制,運(yùn)行時(shí)的內(nèi)存限制走的是堆內(nèi)存,跟CPU分配內(nèi)存相關(guān)。

Java - 將base64編碼解碼成圖片

?

解決方法1:如果將字符串預(yù)先存到一個(gè)文件里,使用的時(shí)候再?gòu)奈募镒x出來(lái),就不會(huì)有什么問(wèn)題

// 從文件中讀取字符串
public static String getFileContent(FileInputStream fis, String encoding) throws IOException {
 ?try (BufferedReader br = new BufferedReader(new InputStreamReader(fis, encoding))) {
 ? ?StringBuilder sb = new StringBuilder();
 ? ?String line;
 ? ?while ((line = br.readLine()) != null) {
 ? ? ?sb.append(line);
 ?  }
 ? ?return sb.toString();
  }
}
?
?
public static void main(String[] args) throws IOException {
 ?// 從txt文件中讀取base64字符串
 ?FileInputStream fis = new FileInputStream("/Users/valor/workspace/imgtest/bigimg.txt");
 ?String base64 = getFileContent(fis, "UTF-8");
?
 ?String path = "";
?
 ?// 將base64字符串翻譯成圖片
 ?String fileName = generateImage(base64, path);
 ?System.out.println(fileName);
}

解決方法2:或者如果我們是處于前后端數(shù)據(jù)交換的環(huán)境中,由于json對(duì)于string的長(zhǎng)度是沒(méi)有限制的,所以可以直接使用@ResponseBody通過(guò)一個(gè)Bean,去接收這串base64。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408476.html

// bean
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ImgInfo {
 ? ?Long id;
 ? ?String base64;
}
?
// controller
@RestController
public class String2ImgController {
?
 ? ?@Autowired
 ? ?private String2ImgService imgService;
?
 ? ?@PostMapping("/img/base64")
 ? ?public String transferImg(@RequestBody ImgInfo imgInfo) {
?
 ? ? ? ?String base64 = imgInfo.getBase64();
 ? ?    // System.out.println(base64);
 ? ? ?
 ? ? ? ?// 去掉base64前綴 data:image/jpeg;base64,
 ? ? ? ?base64 = base64.substring(base64.indexOf(",", 1) + 1);
 ? ? ? ?// 解密,解密的結(jié)果是一個(gè)byte數(shù)組
 ? ? ? ?Base64.Decoder decoder = Base64.getDecoder();
 ? ? ? ?byte[] imgbytes = decoder.decode(base64);
 ? ? ? ?for (int i = 0; i < imgbytes.length; ++i) {
 ? ? ? ? ?if (imgbytes[i] < 0) {
 ? ? ? ? ? ?imgbytes[i] += 256;
 ? ? ? ?  }
 ? ? ?  }
 ? ? ?
 ? ? ?// 對(duì) byte 數(shù)組進(jìn)行你所需要的操作……
 ?  }
}

到了這里,關(guān)于Java - 將base64編碼解碼成圖片的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • JS Base64編碼和解碼

    Base64 是一種編碼方式,可以將任意字符(包括二進(jìn)制字符流)轉(zhuǎn)成可打印字符。JavaScript 定義了兩個(gè)與 Base64 相關(guān)的全局方法。 btoa():字符串或二進(jìn)制值轉(zhuǎn)為 Base64 編碼。 atob():把 Base64 編碼轉(zhuǎn)為原來(lái)的字符。 Base64 方法不能夠操作非 ASCII 字符。 示例 要將非 ASCII 碼字符轉(zhuǎn)為

    2024年02月16日
    瀏覽(19)
  • Python中的Base64編碼和解碼

    Python3中Base64編碼和解碼,使用的是base64模塊中的b64encode 和 b64decode方法,關(guān)于怎么使用,首先查看源碼中的說(shuō)明: b64encode : Encode the bytes-like object s using Base64 and return a bytes object b64decode : Decode the Base64 encoded bytes-like object or ASCII string s… The result is returned as a bytes object. 要點(diǎn)

    2024年02月13日
    瀏覽(20)
  • java使用hutool把服務(wù)器圖片鏈接轉(zhuǎn)為base64編碼

    需求是把服務(wù)器的圖片鏈接或者網(wǎng)上的圖片鏈接地址轉(zhuǎn)為base64位編碼方便前端操作 base64編碼轉(zhuǎn)為圖片在線網(wǎng)址 https://imgtobase64.d777.com/ 1.1 引入依賴(lài) 1.2 代碼

    2024年02月12日
    瀏覽(20)
  • 前端Base64 編碼和解碼的使用方法

    使用 Base64 類(lèi)從 ‘js-base64’ 庫(kù)進(jìn)行 Base64 編碼和解碼 vue: 使用 npm 或 yarn 包管理器來(lái)安裝‘js-base64’ 庫(kù) 原生: 通過(guò) vue: 導(dǎo)入 Base64 類(lèi): 或者: vue: Base64 編碼的使用示例: Base64 解碼的使用示例: 或者,導(dǎo)入 encode 和 decode 函數(shù): Base64 編碼的使用示例: Base64 解碼的使用示例

    2024年02月07日
    瀏覽(26)
  • 【JS】實(shí)現(xiàn) Base64 編碼和解碼(及中文亂碼問(wèn)題)

    JavaScript 定義了兩個(gè)與 Base64 相關(guān)的全局方法。 遇到中文編碼需要先做一次 URI 組件編碼或?qū)獯a后的內(nèi)容進(jìn)行 URI 解碼 示例:Base64 編碼 示例:Base64 解碼 中文亂碼處理方法: 按照 Base64 插件:編解碼: js-base64 ,判斷是否是Base64編碼格式: is-base64 插件使用

    2024年02月15日
    瀏覽(25)
  • Linux系統(tǒng)下使用命令行進(jìn)行Base64編碼和解碼

    大家知道,編碼是將數(shù)據(jù)轉(zhuǎn)換為有效傳輸或存儲(chǔ)所需格式的過(guò)程。相反,解碼是將編碼數(shù)據(jù)轉(zhuǎn)換回其原始格式的過(guò)程。今天在這里向大家介紹一下 Base64 編碼和解碼,以便大家理解與學(xué)習(xí)。 Base64 是將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為 ASCII 的編碼方式之一。通常,當(dāng)二進(jìn)制數(shù)據(jù)傳輸?shù)綗o(wú)法正

    2024年02月11日
    瀏覽(39)
  • drf——全局處理異常、接口文檔、jwt介紹、based64編碼與解碼
  • C# 采用3DES-MAC進(jìn)行簽名 base64解碼與編碼

    C# 采用3DES-MAC進(jìn)行簽名 base64解碼與編碼

    ** ** 3DES-MAC(Triple Data Encryption Standard Message Authentication Code)是一種消息認(rèn)證碼(MAC)算法,用于驗(yàn)證消息的完整性和真實(shí)性。3DES-MAC使用了3DES(Triple Data Encryption Standard)加密算法的一部分來(lái)生成MAC值。以下是使用C#示例演示如何使用3DES-MAC簽名一個(gè)消息: 首先,你需要確保在

    2024年02月09日
    瀏覽(20)
  • 深入了解圖片Base64編碼

    深入了解圖片Base64編碼

    title: 深入了解圖片Base64編碼 date: 2024/4/8 10:03:22 updated: 2024/4/8 10:03:22 tags: Base64編碼 圖片轉(zhuǎn)換 HTTP請(qǐng)求 前端開(kāi)發(fā) 移動(dòng)應(yīng)用 性能優(yōu)化 圖片壓縮 Base64編碼是一種將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為文本字符串的編碼方式,通過(guò)將數(shù)據(jù)轉(zhuǎn)換為一種可打印的ASCII字符集,以便在文本協(xié)議中傳輸。對(duì)圖

    2024年04月08日
    瀏覽(51)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包