工具
Base64 和 图片互转。
导入的依赖
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>4.0.5</version></dependency>
图片和base64互转
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;/*** base64和图片之间的关系*/
public class Base64ToImageUtils {/*** 图片转化成base64字符串** @param imgPath* @return*/public static String GetImageStr(String imgPath) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理String imgFile = imgPath;// 待处理的图片InputStream in = null;byte[] data = null;String encode = null; // 返回Base64编码过的字节数组字符串// 对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();try {// 读取图片字节数组in = new FileInputStream(imgFile);data = new byte[in.available()];in.read(data);encode = encoder.encode(data);} catch (IOException e) {e.printStackTrace();} finally {try {in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return encode;}/*** base64字符串转化成图片** @param imgData 图片编码* @param imgFilePath 存放到本地路径* @return* @throws IOException*/@SuppressWarnings("finally")public static boolean GenerateImage(String imgData, String imgFilePath) throws IOException { // 对字节数组字符串进行Base64解码并生成图片if (imgData == null) // 图像数据为空return false;BASE64Decoder decoder = new BASE64Decoder();OutputStream out = null;try {out = new FileOutputStream(imgFilePath);// Base64解码byte[] b = decoder.decodeBuffer(imgData);for (int i = 0; i < b.length; ++i) {if (b[i] < 0) {// 调整异常数据b[i] += 256;}}out.write(b);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {out.flush();out.close();return true;}}
}
执行测试用例
String base64 = Base64ToImageUtils.GetImageStr("D:\\test\\dog.jpg");System.out.println("base64");System.out.println(base64);Base64ToImageUtils.GenerateImage(base64, "D:\\test\\dog2.jpg");System.out.println("base64 转图片");
结果