前言
背景
对于javaweb服务端开发人员,图片资源的管理总是绕不开的一环。很多网站上都会提供上传图片这个功能,而现代数码设备拍摄出来的都是高清图片,分辨率很高,占用的空间也很大。物理存储的问题还算容易解决,但是网络带宽太紧张了。一个页面动则就几十M,那加载速度,想想也是够了,所以图片的压缩就必不可少了。
Thumbnailator简介
介绍
对于图片处理,JDK中也提供了对应的工具类,不过处理起来会很麻烦,而Thumbnailator是一个Google开源的优秀图片处理的第三方Java类库,处理效果远比Java API的好。
Thumbnailator可以使用很少的代码实现图片的压缩功能,当然了,Thumbnailator也提供给图片缩放、旋转与加水印等功能。
使用方式
github地址
https://github.com/coobird/thumbnailator
maven的地址
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
原图(200px*162px)
1.图片压缩
Thumbnails.of("原图文件的路径")
.scale(0.5)
.toFile("压缩后文件的路径");
宽高缩放50%
压缩图(100px*81px)
Thumbnails.of("原图文件的路径")
.size(100, 75)
.toFile("压缩后文件的路径");
设置宽高最大值,等比例缩小
压缩图(93px*75px)
Thumbnails.of("原图文件的路径")
.scale(1.0, 0.5)
.toFile("压缩后文件的路径");
1
2
3
设置宽为原图100%,高为原图50%,非等比例缩放
压缩图(200px*81px)
其中,
scale: 按照比例进行缩放。范围:0.0~N。
scale(0.5) 宽高比例都是50%缩放 , scale(1,0.5) 宽不变,高为50%缩放
size:指定大小进行缩放 size(100, 75)
若图片宽比100小,高比75小,不变
若图片宽比100小,高比75大,高缩小到75,图片比例不变
若图片宽比100大,高比75小,宽缩小到100,图片比例不变
若图片宽比100大,高比100大,图片按比例缩小,宽缩小到100或高缩小到75,但要保证宽小于等于100,高小于等于75
2.图片旋转
Thumbnails.of("原图文件的路径")
.scale(0.8)
.rotate(90)
.toFile("转换后文件的路径");
1
2
3
4
5
Thumbnails.of(“原图文件的路径”)
.size(40,40)
.rotate(90)
.toFile(“转换后文件的路径”);
1
压缩图
其中,
rotate(角度): 正数:顺时针 负数:逆时针
scale,size 必须有一个有值
3.加水印
File image = new File("水印图片地址");
Thumbnails.of("原图文件的路径")
.scale(0.8)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(image), 0.5f)
.toFile("转换后文件的路径");
1
2
3
4
5
压缩图
其中
Watermark:添加水印 watermark(位置,水印图,透明度)
4.修改文件格式
Thumbnails.of(“原图文件的路径”)
.scale(1f)
.outputFormat(“jpg”)
.toFile(“转换后文件的路径”);
其中,
outputFormat:设置转换后图片格式,之前听说该属性设置为png时,scale缩放属性无效,测试用0.4.8的版本已经能正常缩放了
5.不改变宽高,压缩大小
Thumbnails.of("原图文件的路径")
.scale(1f)
.outputQuality(0.5f)
.toFile("压缩后文件的路径");
1
2
3
4
其中,
outputQuality: 输出的图片质量,范围:0.0~1.0,1为最高质量.
————————————————
版权声明:本文为优快云博主「s12s12c12」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/s12s12c12/article/details/106127596