环境:SpringBoot3.2.5
1. 简介
在Web项目开发中,对用户上传的图片进行处理是非常有必要的。对于图片的处理,常见的需求包括缩放、添加水印等。
缩放功能可以根据实际需求调整图片的大小,以适应不同的显示场景。通过合理的缩放,不仅可以节省存储空间,还能提升加载速度,优化用户体验。
水印功能则是一种有效的版权保护手段。通过在图片上添加文字或图标水印,可以明确标识图片的归属和来源,防止被恶意盗用。
在Java环境中创建高质量的缩略图可能颇具挑战性,要求开发者掌握Image I/O API、Java 2D API以及图像处理和缩放技术等复杂知识。然而,你无需为此担忧!本篇文章将介绍一个非常牛逼的开源组件Thumbnailator。
Thumbnailator的流畅接口(Fluent Interface)可以用来在一步简单的操作中完成相当复杂的缩略图处理任务。
准备环境,引入如下依赖:
不依赖其它,只需引入该包即可完整各种复杂的图片出来。
2. 实战案例
2.1 创建缩略图
该示例中,将原图大小缩放到160 * 160 然后输出到output目录下。最终图片对比如下:
虽然给定的缩放大小都是160,但是最终生成的是等比例的大小,但是不会超过160。
2.2 添加水印
在该示例中,首先调整了图片大小,接着在右下角放置一个半透明的水印,最后以80%的压缩质量设置保存为7_watermark.png。最终生成效果:
2.3 旋转图片
该示例中,我们将图片旋转了180°,最终效果:
2.4 强制缩略图大小
在上面的示例中,我们指定了缩放图片的大小,但是最终生成的图片还是等比例的,这样的结果是宽或高不会高出指定的大小,并没有严格的限定在指定的大小。
最终生成的效果:
严格按照指定的大小生成图片。你也可以如下操作
同样能按照指定的大小输出。
2.5 通过指定的因子缩放
通过scale方法设置缩放的比,最终效果:
2.6 批量生成缩略图
我们一次性可以出来多个图片,并指定输出的目录。
该示例将1,2,3图片一次性按照设置生成缩略图,然后输出到output目录下,效果如下:
这里生成缩略图的命名策略是自动在原文件名前添加thumbnail.前缀,你也可以设置为:Rename.NO_CHANGE,这样图片将按照原文件名输出。
2.7 与Spring Boot整合
我们这里演示一个图片上传后生成缩略图进行输出的示例。
该示例中,将上传的图片进行缩放后,返回BufferedImage对象,直接直接将该对象进行输出,最终效果:
图片