# Coverage Summary for Class: ImageUtil (cn.edu.ecnu.stu.bookstore.utils)

Class | Class, % | Method, % | Line, %
--- | --- | --- | ---
ImageUtil | 100% (1/1) | 66.7% (2/3) | 64.9% (24/37)

     package cn.edu.ecnu.stu.bookstore.utils;

     import cn.edu.ecnu.stu.bookstore.component.AppException;
     import cn.edu.ecnu.stu.bookstore.component.Constants;

     import java.awt.image.BufferedImage;
     import java.io.ByteArrayInputStream;
     import java.io.ByteArrayOutputStream;
     import java.io.File;
     import java.io.IOException;
     import java.util.Base64;
     import java.util.UUID;

     import javax.imageio.ImageIO;

     public class ImageUtil {

         /**
          * 图片转Base64字符串
          * @param imageFileName
          * @return
          */
         public static String convertImageToBase64Str(String imageFileName) {
             ByteArrayOutputStream baos = null;
             try {
                 //获取图片类型
                 String suffix = imageFileName.substring(imageFileName.lastIndexOf(".") + 1);
                 //构建文件
                 File imageFile = new File("pictures/" + imageFileName);
                 //通过ImageIO把文件读取成BufferedImage对象
                 BufferedImage bufferedImage = ImageIO.read(imageFile);
                 //构建字节数组输出流
                 baos = new ByteArrayOutputStream();
                 //写入流
                 ImageIO.write(bufferedImage, suffix, baos);
                 //通过字节数组流获取字节数组
                 byte[] bytes = baos.toByteArray();
                 //获取JDK8里的编码器Base64.Encoder转为base64字符
                 return Base64.getEncoder().encodeToString(bytes);
             } catch (Exception e) {
                 e.printStackTrace();
             } finally {
                 try {
                     if (baos != null) {
                         baos.close();
                     }
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
             return null;
         }

         /**
          * Base64字符串转图片
          * @param base64String
          */
         public static String convertBase64StrToImage(String base64String) {
             ByteArrayInputStream bais = null;
             try {
                 //获取图片类型
                 String suffix = "png";
                 //获取JDK8里的解码器Base64.Decoder,将base64字符串转为字节数组
                 byte[] bytes = Base64.getDecoder().decode(base64String);
                 //构建字节数组输入流
                 bais = new ByteArrayInputStream(bytes);
                 //通过ImageIO把字节数组输入流转为BufferedImage
                 BufferedImage bufferedImage = ImageIO.read(bais);
                 String fileName = UUID.randomUUID() + "." + suffix;
                 String fullPath = "pictures/" + fileName;
                 //构建文件
                 File imageFile = new File(fullPath);
                 //写入生成文件
                 ImageIO.write(bufferedImage, suffix, imageFile);
                 return fileName;
             } catch (Exception e) {
                 throw new AppException(Constants.CLIENT_ERROR, Constants.PICTURE_ERROR);
             } finally {
                 try {
                     if (bais != null) {
                         bais.close();
                     }
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
     }