五一去了具有诗情画意的城市---杭州,今天是假期结束后回来上班的第一天,玩饱之后回来,确实精神抖擞了不少;
前段时间开发了有关电子签名的需求,其中有个关于解码Base64图片的知识点,值得关注一下;
情况是这样的:
我在签字板上 , 签完名并点击确定之后,生成的图片路径是base64格式的,领导想将签名生成的图片保存在本地,那么问题的重点来了,怎么样将base64格式的图片保存至本地;
下面一朵代码是我的解决方案:
@Test
public void base64(){
String imgStr = "data:image/gif;base64,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";
String imgFilePath = "D:/youarebeautiful";
String imgFileName = "/20170503.jpg"; File file = new File(imgFilePath); if(!file.exists()){//文件根目录不存在时创建
new File(imgFilePath).mkdirs();
} System.out.println("图片完整路径:"+imgStr);
System.out.println("截取图片路径base64部分内容:"+imgStr.substring(22)); // 图像数据为空
if (imgStr == null){
System.out.println("imgStr is null");
}
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] bytes = decoder.decodeBuffer(imgStr.substring(22)); System.out.println("bytes的长度:"+bytes.length); for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 调整异常数据
bytes[i] += 256;
}
}
// 生成jpg图片
OutputStream out = new FileOutputStream(imgFilePath+imgFileName);
out.write(bytes);
out.flush();
out.close();
} catch (Exception e) { }
}
复制代码即可一试 , 拿走 , 不谢~