图片转码?缩略图生成?这个工具带你飞!!
看完本文你将会会收获:使用java优雅的处理图片;包括:主流图片格式转码、图片压缩(缩略图生成)等。
原理
本次博客使用的Thumbnailator包,实际上是封装好的类和方法,基于Java的Image I/O API、Java 2D API等API接口实现。所以,因为基于Java Image I/O API,所以支持的图片格式有限,但是已经满足绝大多数情况。
一般支持的格式如下:
Read:
JPEG 2000,JPG,tiff,bmp,PCX,gif,WBMP,PNG,RAW,JPEG,PNM,tif,TIFF,wbmp,jpeg,jbig2,jpg,JPEG2000,BMP,pcx,GIF,png,raw,JBIG2,pnm,TIF,jpeg2000,jpeg 2000Write:
JPEG 2000,JPG, tiff,bmp,PCX,gif,WBMP,PNG,RAW,JPEG,PNM,tif,TIFF,wbmp,jpeg,jpg,JPEG2000,BMP,pcx,GIF,png,raw,pnm,TIF,jpeg2000,jpeg 2000
所以,像Apple的HEIC格式,是不支持使用Thumbnailator进行处理的。
如何安装
首先添加lib包,如果你是Maven工程,或者使用Maven管理的项目,添加依赖:
1 | <dependency> |
最新版本Thumbnailator地址:Maven地址
如何使用
Thumbnailator的使用十分简单,原本你需要使用Java的Image I/O API、BufferedImages和Graphics2D来处理图片,Thumbnailator直接封装上述操作。
图片转码
简单的使用演示:
1 | Thumbnails.of(new File("path/source.webp")) |
- 原图片地址:
sourcePath - 输出图片大小:
640*480 - 输出图片格式:
jpg - IO流输出地址(输出图片):
purposePath
1 | Thumbnails.of(originalImage) |
scale是图片尺寸等比缩放,为float类型。outputFormat是输出图片的类型outputQuality是输出图片的质量,即:清晰度/分辨率。
以上两种均可以进行格式转换,其中of方法也可使用输入流传入,最后也可使用
toOutputStream输出注意:默认不支持转为
webp,支持webp转为其他格式,如果需要使用webp,需要使用webp-imageio-core
使用原图片生成缩略图
1 | Thumbnails.of(new File("original.jpg")) |
其中,原图片文件,可以使用字符串String来代替地址:
1 | Thumbnails.of("original.jpg") |
通常,缩略图输出体积已经很小,但是还是可以使用.outputQualit来降低图片质量(分辨率)。
旋转图片
很简单;添加.rotate即可。如:
1 | Thumbnails.of(new File("original.jpg")) |
添加水印
添加水印也十分简单,添加.watermark即可:
1 | Thumbnails.of(new File("original.jpg")) |

