欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现base64图片编码数据转换为本地图片的方法

程序员文章站 2024-02-12 14:14:46
本文实例讲述了java实现base64图片编码数据转换为本地图片的方法。分享给大家供大家参考,具体如下: 项目中用到的把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()){//文件根目录不存在时创建
   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编码解码工具:

在线图片转换base64工具:

base64在线编码解码 utf-8版:

base64在线编码解码 gb2312版:

更多关于java相关内容感兴趣的读者可查看本站专题:《java编码操作技巧总结》、《java数学运算技巧总结》、《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。