Java實現base64圖片編碼數據轉換為本地圖片的方法
本文實例講述了Java實現base64圖片編碼數據轉換為本地圖片的方法。分享給大家供大家參考,具體如下:
項目中用到的把base64圖片數據轉為本地圖片的函數
/**
* 替換html中的base64圖片數據為實際圖片
* @param html
* @param fileRoot 本地路徑
* @param serRoot 服務器路徑
* @return
*/
public static String replaceBase64Image(String html,String fileRoot,String serRoot){
File file = new File(fileRoot);
if(!file.exists()){//文件根目錄不存在時創(chuàng)建
new File(fileRoot).mkdirs();
}
String htmlContent = html;
Pattern pattern = Pattern.compile("\\<img[^>]*src=\"data:image/[^>]*>");
Matcher matcher = pattern.matcher(html);
GUIDUtils.init();
while(matcher.find()){ //找出base64圖片元素
String str = matcher.group();
String src = ExStringUtils.substringBetween(str, "src=\"", "\"");//src="..."
String ext = ExStringUtils.defaultIfEmpty(ExStringUtils.substringBetween(str, "data:image/", ";"), "jpg");//圖片后綴
String base64ImgData = ExStringUtils.substringBetween(str, "base64,", "\"");//圖片數據
if(ExStringUtils.isNotBlank(ext)&&ExStringUtils.isNotBlank(base64ImgData)){
//data:image/gif;base64,base64編碼的gif圖片數據
//data:image/png;base64,base64編碼的png圖片數據
if("jpeg".equalsIgnoreCase(ext)){//data:image/jpeg;base64,base64編碼的jpeg圖片數據
ext = "jpg";
} else if("x-icon".equalsIgnoreCase(ext)){//data:image/x-icon;base64,base64編碼的icon圖片數據
ext = "ico";
}
String fileName = GUIDUtils.buildMd5GUID(false)+"."+ext;//待存儲的文件名
String filePath = fileRoot+File.separator+fileName;//圖片路徑
try {
convertBase64DataToImage(base64ImgData, filePath);//轉成文件
String serPath = serRoot+fileName;//服務器地址
htmlContent = htmlContent.replace(src, serPath);//替換src為服務器地址
} catch (IOException e) {
e.printStackTrace();
}
}
}
return htmlContent;
}
/**
* 把base64圖片數據轉為本地圖片
* @param base64ImgData
* @param filePath
* @throws IOException
*/
public static void convertBase64DataToImage(String base64ImgData,String filePath) throws IOException {
BASE64Decoder d = new BASE64Decoder();
byte[] bs = d.decodeBuffer(base64ImgData);
FileOutputStream os = new FileOutputStream(filePath);
os.write(bs);
os.close();
}
PS:這里再為大家提供幾款base64在線工具供大家參考:
BASE64編碼解碼工具:
http://tools.jb51.net/transcoding/base64
在線圖片轉換BASE64工具:
http://tools.jb51.net/transcoding/img2base64
Base64在線編碼解碼 UTF-8版:
http://tools.jb51.net/tools/base64_decode-utf8.php
Base64在線編碼解碼 gb2312版:
http://tools.jb51.net/tools/base64_decode-gb2312.php
更多關于java相關內容感興趣的讀者可查看本站專題:《Java編碼操作技巧總結》、《Java數學運算技巧總結》、《Java數據結構與算法教程》、《Java字符與字符串操作技巧總結》、《Java操作DOM節(jié)點技巧總結》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
實現一個基于Servlet的hello world程序詳解步驟
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層2022-02-02

