package gsa.rule.model.util;
import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Base64; import java.util.Iterator;
import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.MemoryCacheImageInputStream;
public class ImageUtil { /** * 将图片,或者文件转成base64字符串 * @param imageFile * @return */ public static String getImageStr(File imageFile) { InputStream in = null; try { in = new BufferedInputStream(new FileInputStream(imageFile)); byte[] data = new byte[in.available()]; in.read(data); in.close(); String imageStr = new String(Base64.getEncoder().encode(data)); return imageStr; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 将base64串 转成byte数组,并保存到某路径下的图片中 * @param imageStr * @return */ public static File getImageFile(String imageStr) { File file = new File("D:\\" + System.currentTimeMillis() + ".png"); try { OutputStream out = new FileOutputStream(file); byte[] data = Base64.getDecoder().decode(imageStr); out.write(data); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } return file; } /** * 根据字节流获取图片类型 * */ public static String getImageType(byte[] imageBytes) { try { MemoryCacheImageInputStream memoryCacheImageInputStream = new MemoryCacheImageInputStream(new ByteArrayInputStream(imageBytes)); Iterator<ImageReader> itr = ImageIO.getImageReaders(memoryCacheImageInputStream); while (itr.hasNext()) { ImageReader reader = itr.next(); String imageName = reader.getClass().getSimpleName(); if (imageName != null) { if ("JPEGImageReader".equalsIgnoreCase(imageName)){ return "jpeg"; } if ("JPGImageReader".equalsIgnoreCase(imageName)) { return "jpg"; } if ("pngImageReader".equalsIgnoreCase(imageName)) { return "png"; } } } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return null; }
}