一种是使用Java原生的API,一种是使用 thumbnail
使用方法为: Thumbnails.of().size().toFile(); 可以调用keepAspectRatio方法设置强制缩略。
package test;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
public class ImageUtil {
private static final int WIDTH = 100;
private static final int HEIGHT = 100;
public static String imageReSize(File file, String realUploadPath) {
String des = realUploadPath + File.separator + "thum_" + file.getName();
try (OutputStream out = new FileOutputStream(des); InputStream is = new FileInputStream(file)) {
Image image = ImageIO.read(is);
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);
String imageType = file.getName().substring(file.getName().lastIndexOf(".") + 1);
ImageIO.write(bufferedImage, imageType, out);
} catch (Exception e) {
e.printStackTrace();
}
return des;
}
}