欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現base64圖片編碼數據轉換為本地圖片的方法

 更新時間:2018年06月22日 11:51:02   作者:foreverpx  
這篇文章主要介紹了Java實現base64圖片編碼數據轉換為本地圖片的方法,涉及java編碼轉換及圖片文件生成相關操作技巧,需要的朋友可以參考下

本文實例講述了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程序設計有所幫助。

相關文章

  • Java通過Freemarker模板實現生成Word文件

    Java通過Freemarker模板實現生成Word文件

    FreeMarker是一款模板引擎: 即一種基于模板和要改變的數據, 并用來生成輸出文本的通用工具。本文將根據Freemarker模板實現生成Word文件,需要的可以參考一下
    2022-09-09
  • Java實現AOP功能的封裝與配置的小框架實例代碼

    Java實現AOP功能的封裝與配置的小框架實例代碼

    這篇文章主要介紹了Java實現AOP功能的封裝與配置的小框架實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java使用Condition控制線程通信的方法實例詳解

    Java使用Condition控制線程通信的方法實例詳解

    這篇文章主要介紹了Java使用Condition控制線程通信的方法,結合實例形式分析了使用Condition類同步檢測控制線程通信的相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • MySQL中drop、truncate和delete的區(qū)別小結

    MySQL中drop、truncate和delete的區(qū)別小結

    在MySQL數據庫管理中,常常需要執(zhí)行刪除數據的操作,本文主要介紹了MySQL中drop、truncate和delete的區(qū)別小結,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 關于ArrayList初始化容量的問題

    關于ArrayList初始化容量的問題

    這篇文章主要介紹了關于ArrayList初始化容量的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 利用Spring Social輕松搞定微信授權登錄的方法示例

    利用Spring Social輕松搞定微信授權登錄的方法示例

    這篇文章主要介紹了利用Spring Social輕松搞定微信授權登錄的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java?Swing的層次結構深入理解

    Java?Swing的層次結構深入理解

    這篇文章主要介紹了Java?Swing的層次結構深入理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java如何實現字符串每隔4位加空格

    Java如何實現字符串每隔4位加空格

    這篇文章主要介紹了Java如何實現字符串每隔4位加空格,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringBoot整合MD5加密完成注冊和登錄方式

    SpringBoot整合MD5加密完成注冊和登錄方式

    MD5(MessageDigestAlgorithm5)是一種常見的哈希算法,用于生成固定長度(128位)的哈希值,主要應用于數據完整性校驗和密碼存儲,MD5具有快速計算、不可逆性和抗碰撞性等特點,盡管存在碰撞漏洞,MD5仍廣泛應用于文件下載校驗和數字簽名等場景
    2024-10-10
  • 解決Java中new?BigDecimal()的坑

    解決Java中new?BigDecimal()的坑

    這篇文章主要介紹了解決Java中new?BigDecimal()的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論