1.引入jar
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
2.使用demo
public static void main(String[] args) throws Exception {
String file = "D:/image/test.jpg", image = "D:/image/image.jpg";// 操作图片,生成的图片
// 缩放 默认是按照长宽比例缩放的,按照长宽值最大的值为设置的值,另一值为比例值
Thumbnails.of(file).size(2560, 2048).toFile(image);
// keepAspectRatio(false) 默认是true按照纵横比例缩放的,false时,缩放为指定大小,可能会造成图片变形
Thumbnails.of(file).size(320, 200).keepAspectRatio(false).toFile(image);
//强制缩放
Thumbnails.of(file).forceSize(2560, 2048).toFile(image);
//批量操作
List<File> list= new ArrayList<>();
list.add(new File("D:/image/image1.jpg"));
list.add(new File("D:/image/image2.jpg"));
Thumbnails.of("D:/image/test1.jpg","D:/image/test2.jpg").size(100, 100).toFiles(list);
// 按照原图比例缩放
Thumbnails.of(file).scale(0.7).toFile(image);
Thumbnails.of(file).scale(1.2).toFile(image);
// 旋转 方向为顺时针
Thumbnails.of(file).size(500, 500).rotate(60).toFile(image);
Thumbnails.of(file).size(500, 500).rotate(-90).toFile(image);
// 水印
File waterImg=new File("D:/image/timg.jfif");
//Watermark(Position position, BufferedImage image, float opacity) position 水印位置, BufferedImage 水印照, float 透明度
Thumbnails.of(file).size(500, 500).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(waterImg), 0.2f).toFile(image);
Thumbnails.of(file).size(500,500).watermark(Positions.CENTER, ImageIO.read(waterImg), 0.8f).toFile(image);
// 裁剪 sourceRegion(Position position, int width, int height) position 位置,
// width,height 截取的大小
Thumbnails.of(file).sourceRegion(Positions.CENTER, 600, 400).size(200, 200).toFile(image);
Thumbnails.of(file).sourceRegion(Positions.BOTTOM_RIGHT, 400, 400).size(200, 200).keepAspectRatio(false).toFile(image);
//sourceRegion(int x, int y, int width, int height) x,y左上角为(0,0)开始的坐标,width,height 截取的大小
Thumbnails.of(file).sourceRegion(0, 0, 400, 400).size(200, 200).keepAspectRatio(false).toFile(image);
// 转换图像格式
Thumbnails.of(file).scale(1).outputFormat("png").toFile(image);
Thumbnails.of(file).scale(1).outputFormat("gif").toFile(image);
Thumbnails.of(file).scale(1).outputFormat("JPEG").toFile(image);
// 输出到outputstream中
OutputStream outputStream = new FileOutputStream(new File(image));
Thumbnails.of(file).size(1024, 682).toOutputStream(outputStream);
// asBufferedImage() 返回BufferedImage
BufferedImage thumbnail = Thumbnails.of(file).size(1024, 682).asBufferedImage();
ImageIO.write(thumbnail, "jpg", new File(image));
}