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();
}
}
}
}