/**
* base64 编码转换为 BufferedImage
*
* @param base64 不带前缀以9j/开头的
* @return BufferedImage对象
*/
public static BufferedImage base64ToBufferedImage(String base64) {
Base64.Decoder decoder = Base64.getDecoder();
try {
byte[] bytes = decoder.decode(base64);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
return ImageIO.read(byteArrayInputStream);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 添加边框
*
* @param image base64ToBufferedImage转换出来的image对象
* @param x 原点x坐标(原点一般在左上角)
* @param y 原点y坐标(原点一般在左上角)
* @param width 框宽
* @param height 框高
* @return
*/
public static BufferedImage addBorders(BufferedImage image, int x, int y, int width, int height) {
if (image == null) {
return null;
}
Graphics2D g2 = image.createGraphics();
//画笔颜色
g2.setColor(Color.RED);
//设置画笔粗细
BasicStroke stokeLine = new BasicStroke(8.0f);
g2.setStroke(stokeLine);
//矩形框(原点x坐标,原点y坐标,矩形的长,矩形的宽)
g2.drawRect(x, y, width, height);
g2.dispose();
return image;
}
/**
* BufferedImage转换为 MultipartFile
*
* @param image BufferedImage对象
* @return MultipartFile对象
*/
public static MultipartFile imageToMultipartFile(BufferedImage image) {
try {
//BufferedImage 转化为 ByteArrayOutputStream
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", out);
//ByteArrayOutputStream 转化为 byte[]
byte[] imageByte = out.toByteArray();
//将 byte[] 转为自定义的 MultipartFile对象(实现MultipartFile接口)
return new CustomMultipartFile(imageByte, "/9j");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
// base64转为image
BufferedImage image = ImageUtils.base64ToBufferedImage("9j........");
// 画框
ImageUtils.addBorders(image, 11, 12, 45, 72);
// image 转为 MultipartFile
MultipartFile multipartFile = ImageUtils.imageToMultipartFile(image);
//画框后的图片保存到Minio中
String url = MinioUtil.uploadFileMinio(multipartFile, "fileFormat");
}
网友评论