<p>本文中介绍,如何使用Java优雅处理图片;包括:主流图片格式转码、图片压缩(缩略图生成)等。主要用到的外部工具包:</p>
- Google Thumbnailator
- webp-imageio-core
和以前一样,我们觉得有用、有必要录个视频的内容,我们还是会花时间做个视频:
- 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管理的项目,添加依赖:
如果你不是Maven工程,可以下载的最新版本,如何手动添加lib包,最新版本下载:https://github.com/coobird/thumbnailator/releases/latest
的使用十分简单,原本你需要使用Java的、和来处理图片,直接封装上述操作。简单的使用演示:
- 原图片地址:
- 输出图片大小:
- 输出图片格式:
- IO流输出地址(输出图片):
演示代码:
其中:
- 是图片尺寸等比缩放,为类型。
- 是输出图片的类型,注意:默认不支持,如果需要使用,需要提前安装webp-imageio-core,可以看看下文如何使Java支持。
- 是输出图片的质量,即:清晰度/分辨率。
演示代码:
其中,原图片文件,可以使用字符串来代替地址:
通常,缩略图输出体积已经很小,但是还是可以使用来降低图片质量(分辨率)。
很简单;添加即可。如:
添加水印也十分简单,添加即可:
前端传送图片到后台,我们后台可以对文件扩展名进行判断:
虽然可以直接自动根据创建对应文件对象,但是为了更方便我们自己控制,我们手动创建:
因为,我是使用快速构建,我其实是创建了一个配置规则,可以使透明图片转为时,透明背景渲染为白色。(单纯为了好看……)。实现细节:
- 更优的图像数据压缩算法
- 更小的图片体积
- 肉眼识别无差异的图像质量
- 无损和有损的压缩模式
- Alpha 透明以及动画的特性
简单地说,它可以像格式一样,保存无损画质,并保持图片透明特性;同时,可以像一样,压缩图片。在同等情况下,文件体积比小,甚至比还小。
因为Webp,实际上是Google开发的,所以Java IO流设计之初就不支持Webp格式。所以根据系统的不同,需要安装对应的依赖包:
<hr/>
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/17889.html