Java把Base64编码格式的图片下载到本地指定文件夹下
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Decoder;
import java.io.*;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
public class KafkaConsumer extends ShutdownableThread {
private static final Logger LOG = LoggerFactory.getLogger(KafkaConsumer.class);
public static void main(String[] args) {
// 图片base64字符串
String img = "";
Properties properties = getProperties();
String filePath = properties.getProperty("file.path");
filePath = filePath.replace("\\", "\\\\");
String xm = "张三";
String idCard = "360111";
try {
boolean f = downloadImg(img, filePath, xm, idCard);
if (f) {
LOG.info("XM:" + xm + "图片下载成功");
}
} catch (IOException e) {
LOG.error(e.getMessage(), e);
LOG.info("XM:" + xm + "图片下载失败");
}
}
/**
* base64转图片
*
* @param base64str base64码
* @param savePath 图片路径
* @param xm 人员姓名
* @param idCard 身份证明号码
* @return boolean 判断是否成功下载到本地
*/
private static boolean downloadImg(String base64str, String savePath, String xm, String idCard) throws IOException {
//对字节数组字符串进行Base64解码并生成图片
if (base64str == null) {
return false;
}
BASE64Decoder decoder = new BASE64Decoder();
//Base64解码
byte[] b = decoder.decodeBuffer(base64str);
for (int i = 0; i < b.length; ++i) {
//调整异常数据
if (b[i] < 0) {
b[i] += 256;
}
}
// 判断路径是否不存在,不存在就创建文件夹
File fileDir = new File(savePath);
if (!fileDir.exists() && !fileDir.isDirectory()) {
fileDir.mkdirs();
}
// 生成一个空文件,自定义图片的名字
File file = new File(savePath + "\\" + idCard + "_" + xm + ".jpg");
if (!file.exists()) {
file.createNewFile();
}
//生成jpg图片
OutputStream out = new FileOutputStream(file.getPath());
out.write(b);
out.flush();
out.close();
return true;
}
// 注意,这个是根据配置文件拿值,这个配置文件同项目打包后的jar包在同一目录
private static Properties getProperties() {
Properties properties = new Properties();
// 获取项目根目录的绝对路径
String rootPath = System.getProperty("user.dir") + File.separator;
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(new File(rootPath + "application.properties"));
properties = new Properties();
properties.load(fileInputStream);
} catch (FileNotFoundException e) {
LOG.error(e.getMessage(), e);
} catch (IOException e) {
LOG.error(e.getMessage(), e);
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
LOG.error(e.getMessage(), e);
}
}
}
return properties;
}
}
jar包、配置文件和生成图片的目录 D:\\test
application.properties
把项目打成jar包
本文参考:java把base64位编码转为File文件并存到本地_ekkcole的博客-CSDN博客_base64转file java