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);} }