java获取MultipartFile格式图片的宽高

MultipartFile转File再获取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MultipartFile multipartFile = uploadReq.getFile(); // 获取请求传过来的MultipartFile
String fileName = multipartFile.getOriginalFilename();
String prefix=fileName.substring(fileName.lastIndexOf("."));
try {
File file = File.createTempFile(prefix, String.valueOf(System.currentTimeMillis())); // 创建临时文件
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
BufferedImage bufferedImage =ImageIO.read(file); // 通过临时文件获取图片流
if (bufferedImage == null) {
// 证明上传的文件不是图片,获取图片流失败,不进行下面的操作
return ServerResponse.createByErrorMessage("获取图片信息失败");
}
Integer width = bufferedImage.getWidth(); // 通过图片流获取图片宽度
Integer height = bufferedImage.getHeight(); // 通过图片流获取图片高度
// 省略逻辑判断
} catch (Exception e) {
// 省略异常操作
}

MultipartFile直接获取

1
2
3
4
5
6
7
8
9
10
11
12
13
MultipartFile multipartFile = uploadReq.getFile(); // 获取请求传过来的MultipartFile
try {
BufferedImage bufferedImage =ImageIO.read(multipartFile.getInputStream()); // 通过MultipartFile得到InputStream,从而得到BufferedImage
if (bufferedImage == null) {
// 证明上传的文件不是图片,获取图片流失败,不进行下面的操作
return ServerResponse.createByErrorMessage("获取图片信息失败");
}
Integer width = bufferedImage.getWidth();
Integer height = bufferedImage.getHeight();
// 省略逻辑判断
} catch (Exception e) {
// 省略异常操作
}

获取图片大小

1
2
3
4
5
MultipartFile multipartFile = uploadReq.getFile(); // 获取请求传过来的MultipartFile
BigDecimal size = new BigDecimal(multipartFile.getSize());
BigDecimal mod = new BigDecimal(1024);
// 除两个1024,保留两位小数,进行四舍五入,单位为M
size = size.divide(mod).divide(mod).setScale(2, BigDecimal.ROUND_HALF_UP);