public class ImageUtils {
public static final int WIDTH = 100;
public static final int HEIGHT = 100;
public static String resize(MultipartFile file, String realUploadPath) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = (FileInputStream) file.getInputStream();
String des = realUploadPath + file.getOriginalFilename();
fos = new FileOutputStream(des);
Image image = ImageIO.read(fis);
int width = image.getWidth(null);// 原图宽度
int height = image.getHeight(null);// 原图高度
int rate1 = width / WIDTH;// 宽度缩略比例
int rate2 = height / HEIGHT;// 高度缩略比例
int rate = 0;
if (rate1 > rate2) {// 宽度缩略比例大于高度缩略比例,使用宽度缩略比例
rate = rate1;
} else {
rate = rate2;
}
// 计算缩略图最终的宽度和高度
int newWidth = width / rate;
int newHeight = height / rate;
BufferedImage bufferedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(image.getScaledInstance(newWidth, newHeight, image.SCALE_SMOOTH), 0,
0, null);
// "image/jpeg"
String imageType = file.getContentType().substring(file.getContentType().indexOf("/") + 1);
ImageIO.write(bufferedImage, imageType, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null)
fis.close();
} catch (IOException e) {
throw new RuntimeException("读取关闭失败!");
}
try {
if (fos != null)
fos.close();
} catch (IOException e) {
throw new RuntimeException("写入关闭失败!");
}
}
return file.getOriginalFilename();
}
}
ImageUtils
猜你喜欢
转载自blog.csdn.net/qq_35071164/article/details/84744167
今日推荐
周排行