我们在平时的开发中,偶尔也会遇到图片处理的问题,比如图片的压缩,按比例改变图片的大小,不按比例改变图片的大小等等。
如果要自己去开发这样一套工具,我觉得大多数人都是做不到的,所以还是学会站在巨人的肩膀上来的比较轻巧。
所以在这里给大家推荐google使用的开源工具包thumbnailator,这个工具包可以满足各种各样的图片处理要求,除了上面说的还包括旋转,裁切,加水印等等。
而且图片处理过后能保持不错的质量,图片处理性能也ok,代码也比较容易使用,多用用就熟悉了。
这里给大家举一下不按照比例改变图片的大小的代码的例子,大家在以后遇到图片处理问题的时候可以举一反三去完善这个图片处理工具类。
在maven中依赖此工具包:
1 2 <dependency> 3 <groupId>net.coobirdgroupId> 4 <artifactId>thumbnailatorartifactId> 5 <version>0.4.6version> 6 dependency>
写一个公共的图片处理工具类:
1 package com.cfwx.weixin.common.utils; 2 3 import java.io.IOException; 4 5 import net.coobird.thumbnailator.Thumbnails; 6 7 /** 8 * 图片处理工具类 9 * 10 * @author lixiao 11 * @version 1.0 12 * @date 2018/04/18 13 */ 14 public class PictureUtil 15 { 16 17 /** 18 * 私有化工具类对象 19 */ 20 private PictureUtil() 21 { 22 } 23 24 /** 25 * 不按照比例,指定大小进行缩放 26 * 27 * @param inFilepath 28 * @param width 29 * @param height 30 * @param outFilepath 31 * @throws IOException 32 */ 33 public static void keepAspectRatioFalse(String inFilepath, int width, int height, String outFilepath) throws IOException 34 { 35 Thumbnails.of(inFilepath).size(width, height).keepAspectRatio(false).toFile(outFilepath); 36 } 37 38 }
将构造函数私有化可以避免创建此工具类的对象,这样就只能通过类名调用此工具类的静态方法,我们这里封装了一个不按照比例,指定大小进行缩放的方法,inFilePath是指原图片保存的路径,在项目中一般使用临时文件,业务处理结束后,一般会将临时文件删除,避免暂用项目空间,造成项目臃肿,width宽度,height高度,outFilepath为输出图片保存路径,同理此文件根据情况也可以作为临时文件,比如前端要下载指定大小的图片,那么后端处理结束后需要将之前处理的图片删除,避免造成项目臃肿。
Thumbnails类的of方法指定原图片路径,size方法指定图片的大小,keepAspectRatio指定是否按照比例缩放,toFile方法用来输出处理后的图片到指定路径。
thumbnailator工具包中还有很多方法来实现各种各样的图片处理,这里就不给大家一一列举,大家自己把thumbnailator工具包下载下来,结合相关的api资料去完善自己的图片处理工具类,然后去玩一玩图片的各种处理。
结束语:知识是一种使求知者吃得越多越觉得饿的粮食。
可爱博主:AlanLee
博客地址:http://www.cnblogs.com/AlanLee
本文出自博客园,欢迎大家加入博客园。