简介
Thumbnailator是一个用于Java的「缩略图生成库」。
通过Thumbnailator提供的「流畅接口」(fluent interface)的方式可以完成复杂的缩略图处理任务,无需访问Image I/O API并通过Graphics2D对象手动操作BufferedImages。
Maven依赖:
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>复制
Thumbnailator的使用
原图original.jpg:

大小:49.1 KB
尺寸:640 x 426
生成缩略图(按等比缩放):
public class Demo {
public static void main(String[] args) throws IOException {
Thumbnails.of(new File("f:\\original.jpg"))
//设置缩略图大小,按等比缩放
.size(200, 200)
//将生成的缩略图写入文件
.toFile(new File("f:\\thumbnail.jpg"));
}
}复制

大小:4.7 KB
尺寸:200 x 133
生成缩略图(不按等比缩放):
public class Demo {
public static void main(String[] args) throws IOException {
Thumbnails.of(new File("f:\\original.jpg"))
//设置缩略图大小,不按等比缩放
.forceSize(200, 200)
//将生成的缩略图写入文件
.toFile(new File("f:\\thumbnail.jpg"));
}
}复制

大小:6.3 KB
尺寸:200 x 200
按比例缩放图片:
public class Demo {
public static void main(String[] args) throws IOException {
Thumbnails.of(new File("f:\\original.jpg"))
//缩小50%
.scale(0.5)
//将生成的缩略图写入文件
.toFile(new File("f:\\thumbnail.jpg"));
}
}复制

大小:9.8 KB
尺寸:320 x 213
缩放并旋转图片:
public class Demo {
public static void main(String[] args) throws IOException {
Thumbnails.of(new File("f:\\original.jpg"))
.size(300, 300)
//旋转180度
.rotate(180)
//将生成的缩略图写入文件
.toFile(new File("f:\\thumbnail.jpg"));
}
}复制

大小:8.6 KB
尺寸:300 x 200
缩放图片并添加水印:
public class Demo {
public static void main(String[] args) throws IOException {
//水印图片
BufferedImage watermarkImage = ImageIO.read(new File("f:\\watermark.jpg"));
Thumbnails.of(new File("f:\\original.jpg"))
.size(500, 500)
//添加水印
//watermark参数1:表示水印位置,Positions枚举类中预定义了一些常用的位置
//watermark参数2:水印图片
//watermark参数3:水印的不透明度
.watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.8f)
//将生成的缩略图写入文件
.toFile(new File("f:\\thumbnail.jpg"));
}
}复制

大小:23.1 KB
尺寸:500 x 333
图片裁剪:
public class Demo {
public static void main(String[] args) throws IOException {
Thumbnails.of(new File("f:\\original.jpg"))
//裁剪大小
.size(200, 200)
//裁剪位置
.crop(Positions.CENTER)
.toFile(new File("f:\\thumbnail.jpg"));
}
}复制

大小:6.1 KB
尺寸:200 x 200
批量处理缩略图:
public class Demo {
public static void main(String[] args) throws IOException {
Thumbnails.of("f:\\original.jpg", "f:\\original2.jpg", "f:\\original3.jpg")
.size(200, 200)
//处理后的缩略图输出到指定文件夹,使用原来的名称
.toFiles(new File("f:\\images"), Rename.NO_CHANGE);
}
}复制

除了将缩略图输出到指定文件之外,也可以将它输出到输出流或直接作为BufferedImage返回。
文章转载自我真的不会Java啊,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
AI关键场景得到全面支持!OceanBase入选Forrester报告三大领域代表厂商
OceanBase数据库
261次阅读
2025-04-19 22:27:54
全面进入AI时代|OceanBase 构建智能数据新底座
OceanBase数据库
82次阅读
2025-04-27 16:34:14
阿里云 AI 搜索开放平台新功能发布:大模型联网能力上线
阿里云大数据AI技术
65次阅读
2025-04-16 09:59:20
智能体新基建实践:基于CAMEL-AI×OceanBase的向量数据库应用探索
OceanBase数据库
42次阅读
2025-04-25 15:56:25
大搜车联合OB Cloud:云端赋能经销商系统,驱动汽车交易数字化变革
OceanBase数据库
36次阅读
2025-04-26 14:12:59
OceanBase即将亮相中国电子信息年会,共探Data+AI融合新边界
OceanBase数据库
36次阅读
2025-04-11 21:14:31
OceanBase参展第十五届交博会,赋能道路交通构建AI时代一体化数据底座
OceanBase数据库
32次阅读
2025-04-29 15:31:43
同学请就位!OceanBase开源任务已上线,这个夏天用代码说话
OceanBase数据库
28次阅读
2025-04-26 16:10:34
镜舟科技出席工业软件创新暨开源峰会,分享开源创新与生态协同实践
镜舟科技
12次阅读
2025-04-30 20:04:57
VScode + Cline + MySQL MCP Server尝试
core dumped
11次阅读
2025-05-08 18:36:23