工具类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* 获取指定目录文件夹照片并转成base64字符串
*/
public class PicBase64Generator {
Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 参数为照片的目录路径+文件名称+文件后缀
* @param imgFile
* @return
*/
public String GetImageStr(String imgFile) {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
//对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);//返回Base64编码过的字节数组字符串
}
}
使用
public class TestMain2 {
public static void main(String[] args) {
PicBase64Generator p = new PicBase64Generator();
//注意了,java这个生成的base64是没有data:image/jpeg;base64,这个头部的,如果要能正确的能转换成显示图片是需要加上的
//之前就被这个坑了很久,之前前端转base64会自动加上这个头的,后台代码是需要手动处理的,或者在工具类里进行加上也可以
String IdImage64Str = "data:image/jpeg;base64," + p.GetImageStr("D:\\picture\\photo.jpg");
System.out.println("获取到的图片base64: "+IdImage64Str);
}
}