修改一下BASE64Decoder decoder = new BASE64Decoder();打包有些可能会出现问题,修改为Base64.Decoder decoder = Base64.getDecoder();
1.图片转为base64格式代码
File file = new File("C:\\Users\\1\\Desktop\\123.png");
byte[] data = null;
InputStream inputStream = new FileInputStream(file);
// 读取图片字节数组
try{
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = inputStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
data = swapStream.toByteArray();
} catch (
IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String faceBinaryData = java.util.Base64.getEncoder().encodeToString(data);
System.out.println(faceBinaryData);
2.通过base64转为图片下载下来
private static String GenerateImage(String base64str, String savePath){
try {
//对字节数组字符串进行Base64解码并生成图片
if (base64str == null || base64str.equals("")) {
throw new XException("传入的图片base64为空串!");
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String path = savePath + "/" +simpleDateFormat.format(new Date());;
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
// BASE64Decoder decoder = new BASE64Decoder();
Base64.Decoder decoder = Base64.getDecoder();
//Base64解码
byte[] b = decoder.decodeBuffer(base64str);
for (int i = 0; i < b.length; ++i) {
//调整异常数据
if (b[i] < 0) {
b[i] += 256;
}
}
File tempFile = File.createTempFile(String.valueOf(System.currentTimeMillis()), ".png", file);
FileOutputStream outputStream = new FileOutputStream(tempFile);
outputStream.write(b);
outputStream.flush();
outputStream.close();
int indexOf = tempFile.getPath().indexOf("Desktop");
return tempFile.getPath().substring(indexOf - 1).replaceAll("\\\\","/");
}catch (Exception e) {
return null;
}
}