Java代码如何为一张图片生成缩略图呢?
下文笔者讲述使用java代码生成缩略图的方法分享,如下所示
生成缩略图的实现思路
方式1:
使用Thumbnailator即可生成缩略图
GitHub:https://github.com/coobird/thumbnailator
Thumbnailator不依赖外部库,轻便高效,任何平台适用,支持缩放、旋转、截取,支持水印。
方式2:
Imgscalr
GitHub:https://github.com/rkalla/imgscalr
全部基于 Java 2D,不依赖外部库,轻便高效
任何平台适用,支持缩放、旋转、截取
但不支持水印
下文笔者将使用Thumbnailator讲述具体的生成方法,如下所示
Thumbnailator使用示例
引入jar包
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
指定大小缩放
//参数小且比例与原比例一样 //则按参数输出结果 Thumbnails.of(originalPic) .size(400, 300) .toFile(picturePath + "climb-up.size.400X300.jpeg"); //参数大且比例不等 //则按比例放大,取最小的值 Thumbnails.of(originalPic) .size(4400, 3400) .toFile(picturePath + "climb-up.size.4400X3300.jpeg"); //参数小且比例不等 //则按比例缩小,取最小的值 Thumbnails.of(originalPic) .size(200, 300) .toFile(picturePath + "climb-up.size.200X150.jpeg"); //不保持比例 //则按参数输出结果 Thumbnails.of(originalPic) .size(200, 300) .keepAspectRatio(false) .toFile(picturePath + "climb-up.size.notKeepRatio.200X300.jpeg"); //强制设置大小 //则按参数输出结果,与上个例子一样 Thumbnails.of(originalPic) .forceSize(200, 300) .toFile(picturePath + "climb-up.forceSize.200X300.jpeg");
按比例进行缩放
按比例进行缩放是指按宽和高的比例同时缩放//比例小于1,缩小 //宽和高同时缩小为原来的0.1倍 Thumbnails.of(originalPic) .scale(0.1f) .toFile(picturePath + "climb-up.scale.403X302.jpeg"); //比例大于1,放大 //宽和高同时放大为原来的1.1倍 Thumbnails.of(originalPic) .scale(1.1f) .toFile(picturePath + "climb-up.scale.4435X3326.jpeg");
按角度旋转
按角度旋转时,角度为正数时,顺时针;角度为负数时,逆时针Thumbnails.of(originalPic) .size(400,300) .rotate(45) .toFile(picturePath + "climb-up.rotate.45.jpeg");
添加水印
将水印放在右上角
Thumbnails.of(originalPic)
.size(2000,1500)
.watermark(Positions.TOP_RIGHT, ImageIO.read(
new File(picturePath + "pkslow.size.400X300.jpeg")), 0.5f)
.toFile(picturePath + "climb-up.watermark.jpeg");
裁剪
Thumbnails.of(originalPic) .sourceRegion(Positions.TOP_RIGHT, 1800, 1800) .size(400, 400) .toFile(picturePath + "climb-up.crop.jpeg");
指定目录下的文件批量操作
Thumbnails.of(new File("/pictures/202303/").listFiles())
.size(400, 400)
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


