package org.springblade.modules.animalheat.util; import jodd.util.StringPool; import org.apache.commons.codec.binary.Base64; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.StringUtil; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; import java.util.HashMap; import java.util.Map; /** * base64原始数据转换为图片工具类 */ public class ImageUtil { static BASE64Encoder encoder = new BASE64Encoder(); static BASE64Decoder decoder = new BASE64Decoder(); private static String PRE_URL = "software/minio/data/modules/animalHeat"; private static String PRF_MINIO_URL = "minio/modules/animalHeat"; /** * base64原始数据转换为图片 * @param base64String */ public static String base64StringToImage(String base64String){ try { byte[] bytes = decoder.decodeBuffer(base64String); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); BufferedImage bi = ImageIO.read(bais); String UUID = DateUtil.today()+StringPool.SLASH+ StringUtil.randomUUID(); //可以是jpg,png,gif格式 File w2 = new File("D://"+PRE_URL+StringPool.SLASH+ UUID+".jpg"); //判断父文件夹存在与否 File parentFile = w2.getParentFile(); if (!parentFile.exists()){ //如果不存在,则创建 parentFile.mkdirs(); } //不管输出什么格式图片,此处不需改动 ImageIO.write(bi, "jpg", w2); //返回图片路径 return PRF_MINIO_URL+ StringPool.SLASH+ UUID +StringPool.DOT+ "jpg"; } catch (IOException e) { e.printStackTrace(); } return null; } /** * 获取base64原始数据图片的长宽 * @param base64String */ public static Map getBase64ImageWidthAndHeight(String base64String){ Map map = new HashMap<>(); try { //将base64字符串转换成二进制字节数组 byte[] bytes = decoder.decodeBuffer(base64String); //二进制输入流 ByteArrayInputStream bais = new ByteArrayInputStream(bytes); //io读取图片输入流 BufferedImage bi = ImageIO.read(bais); //封装数据 map.put("imgWidth",bi.getWidth()); map.put("imgHeight",bi.getHeight()); //返回 return map; } catch (IOException e) { e.printStackTrace(); } return null; } }