项目中需求需要将图片翻转,百度一波后发现了 Thumbnails。很好用的工具类。这里记下简单的使用方法。
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
@SneakyThrows
private static void testXuanZhuan() {
// rotate:旋转角度
// scale:缩放比例,没有这个参数会报错
Thumbnails.of("F:\\yan.jpg").scale(1.0).rotate(90).toFile("F:\\image/xuanzhuan_90.jpg");
Thumbnails.of("F:\\yan.jpg").scale(1.0).rotate(-90).toFile("F:\\image/xuanzhuan_-90.jpg");
}
@SneakyThrows
private static void testBiLiSuoFang() {
// scale:缩放比例,没有这个参数会报错
Thumbnails.of("F:\\yan.jpg").scale(0.5f).toFile("F:\\image/suofang_0.5.jpg");
Thumbnails.of("F:\\yan.jpg").scale(1.5f).toFile("F:\\image/suofang_1.5.jpg");
}
@SneakyThrows
private static void testDaXiaoSuoFang() {
/*
size(width,height) 若图片宽比 width 小,高比 height 小,不变
若图片宽比120小,高比120大,高缩小到120,图片比例不变
若图片宽比120大,高比120小,横缩小到120,图片比例不变
若图片宽比120大,高比120大,图片按比例缩小,宽为120或高为120
*/
Thumbnails.of("F:\\yan.jpg").size(120, 120).toFile("F:\\image/suofang_120x120.jpg");
// keepAspectRatio:设置是否保持原始图像的纵横比
Thumbnails.of("F:\\yan.jpg").size(120, 120).keepAspectRatio(false).toFile("F:\\image/suofang_120x120_1.jpg");
}
@SneakyThrows
private static void testShuiYin() {
/**
* watermark(位置,水印图,透明度)
*/
Thumbnails.of("F:\\yan.jpg").scale(1.0).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("F:\\shuiyin.png")), 0.5f)
.outputQuality(0.8f).toFile("F:\\image/shuiyin.jpg");
}
@SneakyThrows
private static void testCaiJian() {
// 图片中心 120 * 120 的区域
Thumbnails.of("F:\\yan.png").scale(1.0).sourceRegion(Positions.CENTER, 120, 120)
.toFile("F:\\image/yan_center.jpg");
// 图片右下 120 * 120 的区域
Thumbnails.of("F:\\yan.png").scale(1.0).sourceRegion(Positions.BOTTOM_RIGHT, 120, 120)
.toFile("F:\\image/yan_bootom_right.jpg");
// 指定坐标,注意图片大小
Thumbnails.of("F:\\yan.png").scale(1.0).sourceRegion(400, 300, 200, 200)
.toFile("F:\\image/yan_local.jpg");
}
@SneakyThrows
private static void testCaiJian() {
// 最后文件可以加后缀名也可以不加
Thumbnails.of("F:\\yan.png").scale(1.0).outputFormat("jpg").toFile("F:\\image/yan");
Thumbnails.of("F:\\yan.png").scale(1.0).outputFormat("jpg").toFile("F:\\image/yan_1.jpg");
}
@SneakyThrows
private static void testStream() {
OutputStream os = new FileOutputStream("F:\\image/yan_stream.png");
Thumbnails.of("F:\\yan.png").scale(1.0).toOutputStream(os);
}
``