咱们在平时的开发中,偶尔也会遇到图片处理的问题,好比图片的压缩,按比例改变图片的大小,不按比例改变图片的大小等等。前端
若是要本身去开发这样一套工具,我以为大多数人都是作不到的,因此仍是学会站在巨人的肩膀上来的比较轻巧。java
因此在这里给你们推荐google使用的开源工具包thumbnailator,这个工具包能够知足各类各样的图片处理要求,除了上面说的还包括旋转,裁切,加水印等等。后端
并且图片处理事后能保持不错的质量,图片处理性能也ok,代码也比较容易使用,多用用就熟悉了。api
这里给你们举一下不按照比例改变图片的大小的代码的例子,你们在之后遇到图片处理问题的时候能够触类旁通去完善这个图片处理工具类。maven
在maven中依赖此工具包:函数
1 <!-- 图片处理工具 --> 2 <dependency> 3 <groupId>net.coobird</groupId> 4 <artifactId>thumbnailator</artifactId> 5 <version>0.4.6</version> 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方法用来输出处理后的图片到指定路径。google
thumbnailator工具包中还有不少方法来实现各类各样的图片处理,这里就不给你们一一列举,你们本身把thumbnailator工具包下载下来,结合相关的api资料去完善本身的图片处理工具类,而后去玩一玩图片的各类处理。spa
结束语:知识是一种使求知者吃得越多越以为饿的粮食。
可爱博主:AlanLee
博客地址:http://www.cnblogs.com/AlanLee
本文出自博客园,欢迎你们加入博客园。