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;
}
}
java 操作文件流 工具类
最新推荐文章于 2024-02-29 20:22:56 发布