业务需求 【Spring Base64Utils工具类使用】在页面上使用截图插件直接得到了一串base64的字符串,直接存在数据库中查询非常慢,所以将base64转换成文件存储于磁盘上。
示例如下:
原图base64文本过大,故找了一张图转成base64后将base64再转存为其他图片,图片请自己查找
package com.ac.hdx.base.framework.utils;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Base64Utils;
public class Base64Util {
public static void main(String[] args) {
String imgBase64Str = Base64Util.ImageToBase64ByLocal("C:\\Users\\Administrator\\Desktop\\网络高并发负载均衡.jpg");
System.out.println(imgBase64Str);
boolean b = Base64Util.Base64ToImage(imgBase64Str,"C:\\Users\\Administrator\\Desktop\\test.jpg");
System.out.println(b);
}
/**
* 本地图片转换成base64字符串
* @param imgFile 本地图片全路径 (注意:带文件名)
*(将图片文件转化为字节数组字符串,并对其进行Base64编码处理)
* @return
*/
public static String ImageToBase64ByLocal(String imgFile) {
byte[] data = https://www.it610.com/article/null;
// 读取图片字节数组
try {
InputStream in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 返回Base64编码过的字节数组字符串
return Base64Utils.encodeToString(data);
}
/**
* base64字符串转换成图片 (对字节数组字符串进行Base64解码并生成图片)
* @param imgStrbase64字符串
* @param imgFilePath 指定图片存放路径(注意:带文件名)
* @return
*/
public static boolean Base64ToImage(String imgStr,String imgFilePath) {
if (StringUtils.isEmpty(imgStr)) // 图像数据为空
return false;
try {
// Base64解码
byte[] b = Base64Utils.decodeFromString(imgStr);
for (int i = 0;
i < b.length;
++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}