今天给大家介绍一个非常好用的一个java开源的Thumbnailator图片压缩jar,随着智能手机的像素越来越高,用户把手机拍摄的3-10兆的图片上传到服务器上,在从服务器上面读取上传的图片会加载非常的缓慢,所以只能考虑压缩图片的质量从而保证网站打开的速度。

第一步导入jar:

<!-- 图片压缩 -->
<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version>
</dependency>

常用的格式:

Thumbnails.of("原图文件的路径") .scale(1f) // 值在0到1之间,1f就是原图大小,0.5就是原图的一半大小.outputQuality(0.5f) // 值也是在0到1,越接近于1质量越好,越接近于0质量越差.toFile("压缩后文件的路径");

其他的格式:

1.指定大小比例进行缩放--考虑图片的完整度size(宽度, 高度)
2.按照比例进行缩放scale(比例)
3.不按照比例,指定大小进行缩放--不考虑图片的完整度size(宽度, 高度).keepAspectRatio(false)
4.图片旋转size(宽度, 高度).rotae(90) -- 旋转90度(必须加size不然报错)
5.水印BOTTOM_RIGHT 右下角CENTER       中心size(宽度, 高度).watermark(Positions.CENTER,).size(1280, 1024).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("d:/uploadImg/head.png")), 0.5f).outputQuality(0.8f).toFile(dest);
6.裁剪 -- 以图片中心400*400区域.sourceRegion(Positions.CENTER, 400,400).size(200,200).keepAspectRatio(false)
7.转化图像格式.size(200,200).outputFormat(".png")

工具类:

/*** 图片上传压缩** @param file 文件* @param subdirectory 文件夹名称* @param width 图片宽度* @param height 图片高度* @return*/public static Map<String, String> saveImgCompress(MultipartFile file, String subdirectory,Integer width,Integer height) {//上传文件路径String path = GetServerPathUtil.getPath("uploadImg");// 获取文件名称String filename = file.getOriginalFilename();String fielhouzhui = filename.substring(filename.lastIndexOf("."), filename.length());//重新修改文件名防止重名filename = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+ (new Random().nextInt(9000) % (9000 - 1000 + 1) + 1000) + StringUtils.getUUID() + fielhouzhui;File filepath = new File(path, filename);//判断路径是否存在,没有就创建一个if (!filepath.getParentFile().exists()) {filepath.getParentFile().mkdirs();}File img = new File(path + File.separator + filename);Map<String, String> map = new HashMap<>();try {Thumbnails.of(file.getInputStream()).size(width,height).toFile(img);map.put("res", "success");map.put("url", filename);return map;} catch (IOException e) {LOG.info(filename + "图片上传失败:" + e);map.put("res", "error");return map;}}

设置上传的图片存放在项目运行目录下面的某一个文件夹:

/*** 获取文件目录** @param subdirectory 文件夹名称* @return*/public static String getPath(String subdirectory) {//获取跟目录---与jar包同级目录的upload目录File upload = null;try {// 获取项目中所在的路径// C:\Users\Administrator\Desktop\SpringBoot\xx\xx-common\target\classesFile path = new File(ResourceUtils.getURL("classpath:").getPath());// 判断目录是否存在if (!path.exists()) path = new File("");// 项目运行目录 + subdirectoryupload = new File(path.getAbsolutePath(), subdirectory);//如果不存在则创建目录if (!upload.exists()) upload.mkdirs();String realPath = upload + "/";return realPath;// C:\Users\Administrator\Desktop\SpringBoot\XX\XX-common\target\classes\123/} catch (FileNotFoundException e) {LOG.info("GetServerPathUtil===>获取服务器路径发生错误!");System.err.println("GetServerPathUtil===>获取服务器路径发生错误!");throw new RuntimeException("获取服务器路径发生错误!");}}

Thumbnailator实现图片压缩相关推荐

  1. Java使用thumbnailator进行图片压缩缩放裁剪水印旋转处理

    Java使用thumbnailator进行图片压缩缩放裁剪水印旋转处理 一.thumbnailator介绍 二.使用步骤 1.maven的pom.xml引入如下 2.测试代码 一.thumbnaila ...

  2. java图像处理002---JAVA图片压缩_图片缩放_图片按照比例缩放_图片指定长宽缩放_Java使用google开源工具Thumbnailator实现图片压缩

    JAVA技术交流QQ群:170933152 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高 ...

  3. Java使用google开源工具Thumbnailator实现图片压缩

    前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高清图片,分辨率也是相当的高,当然占用的存储空 ...

  4. Thumbnailator java图片压缩,加水印,批量生成缩略图

    地址:http://code.google.com/p/thumbnailator/ 1.指定大小进行缩放 //size(宽度, 高度) /* * 若图片横比200小,高比300小,不变 * 若图片横 ...

  5. 服务端基础设施开发----整合thumbnailator编写图片插件

    前言 图片处理一直是web网站的重点与难点.因为硬盘费钱,带宽更加费钱,流量一多系统分分钟崩给你看... 下面将解决这个问题.当然,个人写图片处理也是很费时间的,下面是参考项目与文章: thumbna ...

  6. Thumbnailator的简介和使用范例(图片压缩)

    1.简单介绍 借用红薯对Thumbnailator 的描述:Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图 ...

  7. 将图片压缩至指定大小Kb(Thumbnailator)

    放代码前,先唠叨唠叨,舒缓一下我的郁闷之情. 今天下午改一个后台管理系统的需求,要求上传的图片要压缩到300kb,感觉不难,就开搞. 先撩拨一下度娘,搞点货出来瞅瞅,不复杂就干脆搬砖算了. 嗯,度娘不 ...

  8. thumbnailator图片压缩和碰见的问题修复

    项目:文件存储系统 需求: 需要开发一个图片压缩接口,需要对图片进行按比例压缩 方案:选择用thumbnailator来实现图片压缩, thumbnailator git地址:https://gith ...

  9. java 图片压缩 图片添加水印 thumbnailator javafx

    应用截图 启动界面 添加图片 处理结果 项目地址 图片压缩: java 图片压缩 图片添加水印 thumbnailator javafx pom.xml <?xml version=" ...

最新文章

  1. 【转】Android Activity原理以及其子类描述,androidactivity
  2. python中标识符下划线用作开头_python python中那些双下划线开头的那些函数都是干啥用用的...
  3. python真的那么火吗-前言、Python是真的火,还是炒得火?来看看它的前世和发展...
  4. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——1.2 数字图像处理与机器视觉...
  5. 重写Java Object类中的equals()方法
  6. Buuctf(pwn) picoctf_2018_rop chain 栈溢出
  7. idea怎么提交到dev分支_IDEA设置git提交分支
  8. db2查最新值的前一天值_现在的C1驾照值多少钱?最新价格曝光,老司机一看赚翻了...
  9. JAVA软件图片浏览下载_java模拟浏览器下载图片
  10. 小白必看——一位八年程序员的经验,赶紧看看!!
  11. Apple Notification Center Service--ANCS【转】
  12. 好的物联网开源框架_通过开源文化实现更好的物联网
  13. 数组实例的includes()方法
  14. 怀旧服小号最多的服务器,魔兽世界怀旧服小号战场将成为GZS量产高督的基地?...
  15. 一行代码能做什么? 看到最后一个我终于忍不住...
  16. eclipse中配置drools6.5环境
  17. linux内核之字符设备驱动图解
  18. 汽车空调管路气密性检测
  19. python画代码流程图_python如何画流程图
  20. 计算机存储单位的换算关系

热门文章

  1. HDU 5976 Detachment 逆元
  2. 请在mysql配置文件修sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
  3. Android快速SDK(24)第三方分享UmengShare【肌肉记忆,分钟接入】
  4. 高级JavaScript Day03 | 函数定义和调用、this、严格模式、高阶函数、闭包、递归
  5. C# 浅拷贝与深拷贝
  6. 陈老师排课软件12A(正式版)
  7. 关联性——灰色关联分析
  8. CC2530F256RHAR -RF收发器封装:QFN40
  9. linux 硬盘使用监控,zabbix3.2监控linux磁盘使用空间
  10. android app安装的过程,Pm install App流程