1 package com.*.util;
2
3 import java.io.FileInputStream;
4
5
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.io.OutputStream;
10 import java.util.Date;
11
12 import Decoder.BASE64Decoder;
13 import Decoder.BASE64Encoder;
14
15 public class Base64ImgUtils {
16 public static void main(String[] args) {
17 String strImg = GetImageStr();
18 System.out.println(strImg);
19 GenerateImage(strImg);
20 }
21
22 /**
23 * 图片转化成base64字符串
24 * GetImageStr
25 * 2016年8月31日下午3:37:40
26 * @param
27 * @return
28 */
29 public static String GetImageStr() {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
30 String imgFile = "D:/486e407765c21edd9cbffca69717efb1.jpg";// 待处理的图片
31 InputStream in = null;
32 byte[] data = null;
33 // 读取图片字节数组
34 try {
35 in = new FileInputStream(imgFile);
36 data = new byte[in.available()];
37 in.read(data);
38 in.close();
39 } catch (IOException e) {
40 e.printStackTrace();
41 }
42 // 对字节数组Base64编码
43 BASE64Encoder encoder = new BASE64Encoder();
44 String imghead="data:image/jpg;base64,";//头
45 return imghead+encoder.encode(data);// 返回Base64编码过的字节数组字符串
46 }
47
48 /**
49 * base64字符串转化成图片
50 * GenerateImage
51 * 2016年8月31日下午3:33:12
52 * @param
53 * @return
54 */
55 public static String GenerateImage(String imgStr) { // 对字节数组字符串进行Base64解码并生成图片
56 if (imgStr == null){ // 图像数据为空
57 return "";
58 }
59 String classPath = new Base64ImgUtils().getClass().getResource("").getPath();
60 String path = classPath.substring(0, classPath.indexOf("WEB-INF"));
61 System.out.println(path);
62 BASE64Decoder decoder = new BASE64Decoder();
63 try {
64 String imghead=imgStr.substring(0,imgStr.indexOf(";")).replace("data:image/", ".");//获取图片扩展名
65 imgStr=imgStr.substring(imgStr.indexOf(",")+1);//图片内容
66
67 // Base64解码
68 byte[] b = decoder.decodeBuffer(imgStr);
69 for (int i = 0; i < b.length; ++i) {
70 if (b[i] < 0) {// 调整异常数据
71 b[i] += 256;
72 }
73 }
74 // 生成jpeg图片
75 String filename="upload/"+new Date().getTime()+imghead;//名称
76 String imgFilePath =path+"/"+filename;// 新生成的图片
77 OutputStream out = new FileOutputStream(imgFilePath);
78 out.write(b);
79 out.flush();
80 out.close();
81 return filename;
82 } catch (Exception e) {
83 return "";
84 }
85 }
86
87
88 }