将图片转成字节流
public static byte[] image2Bytes(String imagePath) {
ImageIcon ima = new ImageIcon(imagePath);
BufferedImage bu = new BufferedImage(ima.getImage().getWidth(null), ima
.getImage().getHeight(null), BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream imageStream = new ByteArrayOutputStream();
try {
//把这个jpg图像写到这个流中去,这里可以转变图片的编码格式
boolean resultWrite = ImageIO.write(bu, "png", imageStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] tagInfo = imageStream.toByteArray();
return tagInfo;
}
根据字节流来判断这个图片的编码格式
public static String checkImageType(byte[] imageBytes) {
ByteArrayInputStream bais = null;
MemoryCacheImageInputStream mcis = null;
try {
bais = new ByteArrayInputStream(imageBytes);
mcis = new MemoryCacheImageInputStream(bais);
Iterator<ImageReader> itr = ImageIO.getImageReaders(mcis);
while (itr.hasNext()) {
ImageReader reader = (ImageReader) itr.next();
String imageName = reader.getClass().getSimpleName();
if (imageName != null && ("JPEGImageReader".equalsIgnoreCase(imageName))) {
return "jpeg";
}else if (imageName != null && ("JPGImageReader".equalsIgnoreCase(imageName))) {
return "jpg";
}else if (imageName != null && ("pngImageReader".equalsIgnoreCase(imageName))) {
return "png";
}
}
} catch (Exception e) {
// TODO: handle exception
}
return null;
}