直接上代码,可以直接运行。唯一需要注意的是sun.misc.BASE64Decoder 这个包可能无法引入。可以参考这个博客设置

https://blog.csdn.net/erlian1992/article/details/79518416

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.UUID;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import sun.misc.BASE64Decoder;

import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;

import com.sun.org.apache.xml.internal.security.utils.Base64;

public class Test3 {

// 图片路劲层级分隔符

private static String separator = "/";

public static void main(String[] args) throws Base64DecodingException {

Test3 t = new Test3();

//在这里可以直接写入base64的值进行测试

String path = t.saveImg("");

//输出路径

System.out.println(path);

}

public String saveImg(String baseImg) throws Base64DecodingException {

//定义一个正则表达式的筛选规则,为了获取图片的类型

String rgex = "data:image/(.*?);base64";

String type = getSubUtilSimple(baseImg, rgex);

//去除base64图片的前缀

baseImg = baseImg.replaceFirst("data:(.+?);base64,", "");

byte[] b;

byte[] bs;

OutputStream os = null;

String fileName = "";

String nowDate = "";

// 格式化并获取当前日期(用来命名)

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

nowDate = format.format(new Date());

//把图片转换成二进制

b = Base64.decode(baseImg.replaceAll(" ", "+"));

//生成路径

String path = "D:/home/upload/" + separator + "img" + separator + nowDate + separator;

//随机生成图片的名字,同时根据类型结尾

fileName = UUID.randomUUID().toString() + "." + type;

File file = new File(path);

if (!file.exists() && !file.isDirectory()) {

file.mkdirs();

}

File imageFile = new File(path + "/" + fileName);

BASE64Decoder d = new BASE64Decoder();

// 保存

try {

bs = d.decodeBuffer(Base64.encode(b));

os = new FileOutputStream(imageFile);

os.write(bs);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

if (os != null) {

try {

os.close();

} catch (IOException e) {

e.getLocalizedMessage();

}

}

}

return "img" + separator + nowDate + separator + fileName;

}

public static String getSubUtilSimple(String soap,String rgex){

Pattern pattern = Pattern.compile(rgex);

Matcher m = pattern.matcher(soap);

while(m.find()){

return m.group(1);

}

return "";

}

}

java 图片url转base64_JAVA 将base64图片存到本地,同时生成url(代码可以直接运行)...相关推荐

  1. java image to base64_Java实现base64图片编码数据转换为本地图片的方法

    本文实例讲述了Java实现base64图片编码数据转换为本地图片的方法.分享给大家供大家参考,具体如下: 项目中用到的把base64图片数据转为本地图片的函数 /** * 替换html中的base64 ...

  2. html引用本地图片不能是桌面的,Img标签与本地文件:/// URL不显示在Microsoft Edge Web浏览器...

    在我的桌面应用程序中,我创建了一个临时HTML文件(旨在让用户打印报告),然后通过默认显示网页浏览器.这个HTML文件保存在一个临时文件夹,例如:C:/Users/UserName/AppData/L ...

  3. 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片

    将微信小程序的图片转成base64 点击此链接看另一篇 以下是将后端返回的base64转成图片: 方法1:使用微信小程序自带方法 //把base64转换成图片getBase64ImageUrl: (b ...

  4. Base64图片编码的使用

    一.base64编码介绍 二.base64图片使用介绍 三.base64图片编码大小与原图文件大小之间的联系 四.代码实现 一.base64编码介绍 Base64是网络上最常见的用于传输8Bit字节代 ...

  5. uniapp 之 Base64图片的显示问题以及保存到相册

    目录 一.base64 图片显示问题 二.base64 图片保存到相册   一.base64 图片显示问题   uniapp 官网明文指出 image 标签的 src 支持base64 码:   但是 ...

  6. 【微信小程序】将base64图片保存至本地

    需求描述 微信小程序中,下载一个报告文件,直接可获取到的是报告图片的base64格式. 参考文章 1.微信小程序实现图片下载功能 2.微信小程序把base64的图片保存到手机相册 代码实现 1.wxm ...

  7. java程序如何生成客户端_java webservice生成客户端代码并调用

    wsimport简介 在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用web ...

  8. java 微信开发图片发送,微信开发?Java上传Base64图片

    class="java">import org.apache.commons.codec.binary.Base64; import org.apache.log4j.Log ...

  9. Java通过JfreeChart生成转Base64图片字符串(饼图、折线图、柱状图、折线图-多条、3D柱状图、气泡图、时序图、曲线图、区域图、分布图、联合分类图、双X轴图、K线图、柱状图-横向等图)

    工具类 CreatLineChart.java package DrawLine;import java.awt.BasicStroke; import java.awt.Color; import ...

最新文章

  1. Android源码学习之handler
  2. Log4Net 配置
  3. redis学习(七)jedis客户端
  4. mysql进阶知识_Mysql面试知识点总结(进阶篇)
  5. 摔倒、摔倒检测数据集
  6. python多线程详解_Python多线程详解
  7. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)
  8. 2018年值得推荐的20个Bootstrap网站模板
  9. 物联网老年人健康管理系统源码
  10. 学习plc编程需要什么基础
  11. 天载免息股票汽车整车涨幅居前
  12. 传智播客黑马java 30期_黑马传智播客JavaEE57期 2019最新基础+就业+在职加薪_汇总...
  13. 每天睡6小时和8小时的区别 看完再不敢熬夜了
  14. pyton random
  15. 【C语言程序设计·考试复习】视频讲解课程合集
  16. 计算机课外活动兴趣小组内容,学校课外兴趣小组活动总结
  17. 最优化方法之黄金分割法,为什么是0.618?
  18. 论代码书写规范的重要性——分享一篇良好的代码书写规范,从小白开始培养..(表示太难了吧)
  19. 七、网络安全之AAA认证技术详解
  20. Unity制作地震防空知识视频讲解程序

热门文章

  1. 程序员的十层楼(该内容出自科学网论坛)
  2. vb.net对EXCEL进行读写,保姆级教程
  3. P3353 在你窗外闪耀的星星(前缀和)
  4. 供暖换热站智能监控系统
  5. aboboo播放本地课程(有字幕)教程
  6. 【渝粤教育】21秋期末考试中国法律史10212k1
  7. NUS学习之神经网络理论
  8. 通过json文件将符合要求对应键的内容输出到txt文档
  9. php f4v元数据,[AS3]视频播放器处理flv,mp4,f4v元数据的问题
  10. java led警示牌,一种新型LED三角警示牌的制作方法