Java中將base64編碼字符串轉(zhuǎn)換為圖片的代碼
前一段時(shí)間,在做攝像頭拍照上傳,攝像頭拍的照片為base64編碼格式的字符串,需要上傳至項(xiàng)目中,則需要使用到將base64編碼字符串轉(zhuǎn)換為圖片
1、將base64編碼字符串轉(zhuǎn)換為圖片的代碼如下 ImageUtil.java:
package util;
import javax.servlet.http.HttpServletRequest;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Base64;
import java.util.UUID;
public class ImageUtil {
/**
* @Description: 將base64編碼字符串轉(zhuǎn)換為圖片
* @Author:
* @CreateTime:
* @param file base64編碼字符串
* @param path 圖片路徑-具體到文件
* @return
*/
public static String generateImage(String file, String path, HttpServletRequest request) {
// 解密
try {
// 項(xiàng)目絕對(duì)路徑
String savePath = request.getSession().getServletContext().getRealPath("upload");
// 圖片分類路徑+圖片名+圖片后綴
String imgClassPath = path.concat(UUID.randomUUID().toString()).concat(".jpg");
// 解密
Base64.Decoder decoder = Base64.getDecoder();
// 去掉base64前綴 data:image/jpeg;base64,
file = file.substring(file.indexOf(",", 1) + 1, file.length());
byte[] b = decoder.decode(file);
// 處理數(shù)據(jù)
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
// 保存圖片
OutputStream out = new FileOutputStream(savePath.concat(imgClassPath));
out.write(b);
out.flush();
out.close();
// 返回圖片的相對(duì)路徑 = 圖片分類路徑+圖片名+圖片后綴
return imgClassPath;
} catch (IOException e) {
return null;
}
}
}
補(bǔ)充:Java實(shí)現(xiàn)圖片轉(zhuǎn)base64字符串和圖片互相轉(zhuǎn)換
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.*;
/**
* @Description:
* @Author: Han
* @CreateDate: 2022/9/7
**/
public class Test010 {
public static void main(String[] args) {
String base64Str = imageToBase64Str("D:\\SoftWare\\圖片素材\\頭像\\432.jpeg");
System.out.println(base64Str);
boolean b = base64StrToImage(base64Str, "D:\\002.jpg");
System.out.println(b);
}
/**
* 圖片轉(zhuǎn)base64字符串
*
* @param imgFile 圖片路徑
* @return
*/
public static String imageToBase64Str(String imgFile) {
InputStream inputStream = null;
byte[] data = null;
try {
inputStream = new FileInputStream(imgFile);
data = new byte[inputStream.available()];
inputStream.read(data);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
// 加密
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
/**
* base64編碼字符串轉(zhuǎn)換為圖片,并寫入文件
*
* @param imgStr base64編碼字符串
* @param path 圖片路徑
* @return
*/
public static boolean base64StrToImage(String imgStr, String path) {
if (imgStr == null)
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// 解密
byte[] b = decoder.decodeBuffer(imgStr);
// 處理數(shù)據(jù)
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
//文件夾不存在則自動(dòng)創(chuàng)建
File tempFile = new File(path);
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(tempFile);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}
到此這篇關(guān)于Java中將base64編碼字符串轉(zhuǎn)換為圖片的文章就介紹到這了,更多相關(guān)Java base64編碼字符串轉(zhuǎn)換為圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼
這篇文章主要介紹了java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Java 使用keytool創(chuàng)建CA證書的操作
這篇文章主要介紹了Java 使用keytool創(chuàng)建CA證書的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
Jmeter多臺(tái)機(jī)器并發(fā)請(qǐng)求實(shí)現(xiàn)壓力性能測(cè)試
這篇文章主要介紹了Jmeter多臺(tái)機(jī)器并發(fā)請(qǐng)求實(shí)現(xiàn)壓力性能測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
springboot不同環(huán)境使用不同配置文件打包方式
這篇文章主要介紹了springboot不同環(huán)境使用不同配置文件打包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
JavaWeb實(shí)現(xiàn)學(xué)生管理系統(tǒng)的超詳細(xì)過(guò)程
學(xué)生信息管理系統(tǒng)是針對(duì)學(xué)校人事處的大量業(yè)務(wù)處理工作而開發(fā)的管理軟件,主要用于學(xué)校學(xué)生信息管理,下面這篇文章主要給大家介紹了關(guān)于JavaWeb實(shí)現(xiàn)學(xué)生管理系統(tǒng)的超詳細(xì)過(guò)程,需要的朋友可以參考下2023-05-05
Java壓縮解壓zip技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Java解壓縮zip - 多個(gè)文件(包括文件夾),對(duì)多個(gè)文件和文件夾進(jìn)行壓縮,對(duì)復(fù)雜的文件目錄進(jìn)行解壓。壓縮方法使用的是可變參數(shù),可以壓縮1到多個(gè)文件2017-05-05
詳解Spring框架注解掃描開啟之配置細(xì)節(jié)
本篇文章主要介紹了詳解Spring框架注解掃描開啟之配置細(xì)節(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
SpringBoot實(shí)現(xiàn)異步消息處理的代碼示例
在現(xiàn)代應(yīng)用程序中,異步消息處理是一項(xiàng)至關(guān)重要的任務(wù)。它可以提高應(yīng)用程序的性能、可伸縮性和可靠性,同時(shí)也可以提供更好的用戶體驗(yàn),本文將介紹如何使用Spring Boot實(shí)現(xiàn)異步消息處理,并提供相應(yīng)的代碼示例2023-06-06

