本文中介绍,如何使用Java优雅处理图片;包括:主流图片格式转码、图片压缩(缩略图生成)等。主要用到的外部工具包:
- Google Thumbnailator
- webp-imageio-core
搭建了一个在线演示地址:https://tool.mintimate.cn/processIMG
和以前一样,我们觉得有用、有必要录个视频的内容,我们还是会花时间做个视频:
- 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 2000
- Write: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的格式,是不支持使用进行处理的。
首先添加包,如果你是Maven工程,或者使用Maven管理的项目,添加依赖:
上面的依赖项定义是获取0.4.x版本范围内的的最新可用版本。如果需要特定版本的Thumbnailator,则将[0.4,0.5)替换为特定版本号,例如0.4.13
另外,如果下载太慢,可以把Maven换成国内下载源(比如:阿里Maven镜像源)
如果你不是Maven工程,可以下载的最新版本,如何手动添加lib包,最新版本下载:https://github.com/coobird/thumbnailator/releases/latest
的使用十分简单,原本你需要使用Java的、和来处理图片,直接封装上述操作。简单的使用演示:
- 原图片地址:
- 输出图片大小:
- 输出图片格式:
- IO流输出地址(输出图片):
演示代码:
其中:
- 是图片尺寸等比缩放,为类型。
- 是输出图片的类型,注意:默认不支持,如果需要使用,需要提前安装webp-imageio-core,可以看看下文如何使Java支持。
- 是输出图片的质量,即:清晰度/分辨率。
演示代码:
其中,原图片文件,可以使用字符串来代替地址:
通常,缩略图输出体积已经很小,但是还是可以使用来降低图片质量(分辨率)。
很简单;添加即可。如:
添加水印也十分简单,添加即可:
我在我网站上使用上述包,搭建了一个在线演示地址:https://tool.mintimate.cn/processIMG
功能:用户上传图片后,系统更具用户的选择的输出格式,转码图片。
前端传送图片到后台,我们后台可以对文件扩展名进行判断:
虽然可以直接自动根据创建对应文件对象,但是为了更方便我们自己控制,我们手动创建:
因为,我是使用快速构建,我其实是创建了一个配置规则,可以使透明图片转为时,透明背景渲染为白色。(单纯为了好看……)。实现细节:
这样,就可以成功转码图片了(运用恰当,还可以压缩图片( ;´Д`)):
左边为原图,右边为转码后图片。这个是大小不变情况下,图片质量变为原来80%;主要文件大小变小,是Webp格式带来的。下文我们介绍一下Java转码Webp格式。
- 更优的图像数据压缩算法
- 更小的图片体积
- 肉眼识别无差异的图像质量
- 无损和有损的压缩模式
- Alpha 透明以及动画的特性
简单地说,它可以像格式一样,保存无损画质,并保持图片透明特性;同时,可以像一样,压缩图片。在同等情况下,文件体积比小,甚至比还小。
因为Webp,实际上是Google开发的,所以Java IO流设计之初就不支持Webp格式。所以根据系统的不同,需要安装对应的依赖包:
因为并没有发布到Maven中央仓库,所以使用Maven骨架用户需要自己添加依赖
首先下载的jar发布包,下载地址:https://github.com/nintha/webp-imageio-core/releases
之后添加自定义:
比如:我的项目,添加本地:
这个时候,Java就已经支持处理格式图片了。
最简单的使用……其实是再加入上文所提到的依赖包,便可以使用直接处理图片IO流。
单独使用,我们可以用最传统的方法处理:
图片转WEBP:
感兴趣可以关注B站:Mintimate;
如果想进一步处理图片,需要基于系统工具包了:
比如:ImageMagick
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/17889.html