java压缩图片工具类Thumbnailator

  • 1 介绍
    • 2 简单使用
      • 2.1 指定大小进行缩放
      • 2.2 按照比例进行缩放
      • 2.3 不按照比例,指定大小进行缩放
      • 2.4 旋转
      • 2.5 水印
      • 2.6 裁剪
      • 2.7 转化图像格式
      • 2.8 输出到OutputStream
      • 2.9 输出到BufferedImage
  • 3 png压缩问题

参考资料:
https://www.cnblogs.com/linkstar/p/7412012.html

1 介绍

Thumbnailator是一个简单好用的图片处理的Google开源Java类库。
下载地址:
http://www.java2s.com/Code/Jar/t/Downloadthumbnailator042alljar.htm
maven地址:

<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version>
</dependency>

2 简单使用

2.1 指定大小进行缩放

    private void test1() throws IOException {/** size(width,height) 若图片横比200小,高比300小,不变* 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变* 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300*/Thumbnails.of("D:\1.jpeg").size(200, 300).toFile("D:\2.jpeg");Thumbnails.of("D:\3.jpeg").size(2560, 2048).toFile("D:\4.jpeg");}

2.2 按照比例进行缩放

    private void test2() throws IOException {/*** scale(比例)*/Thumbnails.of("D:\1.jpeg").scale(0.25f).toFile("D:\2.jpeg");Thumbnails.of("D:\3.jpeg").scale(1.10f).toFile("D:\4.jpeg");}

2.3 不按照比例,指定大小进行缩放

    private void test3() throws IOException {/*** keepAspectRatio(false) 默认是按照比例缩放的*/Thumbnails.of("D:\1.jpeg").size(120, 120).keepAspectRatio(false).toFile("D:\2.jpeg");}

2.4 旋转

    private void test4() throws IOException {/*** rotate(角度),正数:顺时针 负数:逆时针*/Thumbnails.of("D:\1.jpg").size(1280, 1024).rotate(90).toFile("D:\2.jpg");Thumbnails.of("D:\3.jpg").size(1280, 1024).rotate(-90).toFile("D:\4.jpg");}

2.5 水印

    private void test5() throws IOException {/*** watermark(位置,水印图,透明度)*/Thumbnails.of("images/test.jpg").size(1280, 1024).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f).outputQuality(0.8f).toFile("C:/image_watermark_bottom_right.jpg");Thumbnails.of("images/test.jpg").size(1280, 1024).watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f).outputQuality(0.8f).toFile("C:/image_watermark_center.jpg");}

2.6 裁剪

    private void test6() throws IOException {/*** 图片中心400*400的区域*/Thumbnails.of("images/test.jpg").sourceRegion(Positions.CENTER, 400, 400).size(200, 200).keepAspectRatio(false).toFile("C:/image_region_center.jpg");/*** 图片右下400*400的区域*/Thumbnails.of("images/test.jpg").sourceRegion(Positions.BOTTOM_RIGHT, 400, 400).size(200, 200).keepAspectRatio(false).toFile("C:/image_region_bootom_right.jpg");/*** 指定坐标*/Thumbnails.of("images/test.jpg").sourceRegion(600, 500, 400, 400).size(200, 200).keepAspectRatio(false).toFile("C:/image_region_coord.jpg");}

2.7 转化图像格式

    private void test7() throws IOException {/*** outputFormat(图像格式)*/Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("png").toFile("C:/image_1280x1024.png");Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("gif").toFile("C:/image_1280x1024.gif");}

2.8 输出到OutputStream

    private void test8() throws IOException {/*** toOutputStream(流对象)*/OutputStream os = new FileOutputStream("C:/image_1280x1024_OutputStream.png");Thumbnails.of("images/test.jpg").size(1280, 1024).toOutputStream(os);}

2.9 输出到BufferedImage

    private void test9() throws IOException {/*** asBufferedImage() 返回BufferedImage*/BufferedImage thumbnail = Thumbnails.of("images/test.jpg").size(1280, 1024).asBufferedImage();ImageIO.write(thumbnail, "jpg", new File("C:/image_1280x1024_BufferedImage.jpg"));}

3 png压缩问题

经过其他用户使用后的反馈,这个工具无法正确压缩出png格式的图片,因为png本身就是一种无损的图片格式,而jpg是一种压缩的图片格式;当前方法目的是为了在尽可能不丢失图片质量的情况下进行的压缩;建议将图片压缩后的格式设置成jpg来解决;.outputFormat(“jpg”)工具源码本身最后还是调用jdk中ImageIO.createImageOutputStream(fos);来实现的

java压缩图片工具类Thumbnailator相关推荐

  1. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  2. Java旋转图片工具类

    前言: 本文提供可以任意角度(最小精度1度),旋转图片的Java工具类,旋转后的图片不会失真或丢失边角,根据角度参数,重新绘制图片,达到无损旋转的目的. 一.图片工具类 import java.awt ...

  3. 一个撇脚的java压缩文件工具类

    今天弄里一个压缩文件的工具类,功能不是很完善,只支持压缩后单级目录,二级文件夹的文件名好像只能用中文,并且解压后还是乱码.请各位高手大侠批评指教,不胜感激! package tests; import ...

  4. Java验证码图片工具类

    工具类源码 import org.apache.commons.codec.binary.Base64;import javax.imageio.ImageIO; import java.awt.*; ...

  5. Java之png图片工具类

    import java.awt.Graphics2D; import java.awt.Image; import java.awt.Transparency; import java.awt.ima ...

  6. Java 旋转、翻转图片工具类(附代码) | Java工具类

    目录 前言 Maven依赖 代码 总结 前言 本文提供java操作图片生成旋转.翻转后的图片工具类,拿来即用. Maven依赖 <dependency><groupId>com ...

  7. Java原生Zip压缩/解压缩工具类

    转载原文: 写了一个系列,写的很好,强烈推荐去看! Java压缩技术(二) ZIP压缩--Java原生实现 Java压缩技术(三) ZIP解压缩--Java原生实现 Zip压缩/解压缩工具类 缺点: ...

  8. 缩放图片工具类,创建缩略图、伸缩图片比例

    支持将Image的宽度.高度缩放到指定width.height,并保存在指定目录 通过目标对象的大小和标准(指定)大小计算出图片缩小的比例 可以设置图片缩放质量,并且可以根据指定的宽高缩放图片 pac ...

  9. Java导入Excel工具类使用教程

    前言: 本工具类提供了Excel导入功能,通过反射机制将Excel中数据映射到实体类中,从而获取Excel数据,工具类依赖org.apache.poi包.支持RESTful API,支持Spring ...

  10. Zip压缩/解压缩工具类

    package com.customcode.util; import java.io.*;import java.util.ArrayList; import java.util.List; imp ...

最新文章

  1. 分享几个matlab的下载安装包吧,一周有效期,过期不候
  2. python 清空所有对象_Python编程思想(7):列表的增删改操作
  3. fzu - 1752 Problem 1752 A^B mod C
  4. 高并发场景下 disk io 引发的高时延问题
  5. 装了Ubuntu后将默认启动项修改为windows
  6. 学习vim的正确姿势!
  7. ajax_典型应用_添加商品标题
  8. 9月26日发布?一加7T系列被“扒光”:硬核到没朋友
  9. 浅谈.net事件机制
  10. 动态改变标题_小米相册更新,新增动态换天/赛博朋克/MIUI12界面等等!
  11. vba里使用python自定义函数(xlwings)
  12. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时11
  13. 截止11月5日,30日内累计跌幅最大的200只股票
  14. Shopee运营中如何规避账号安全风险?站斧超级浏览器防关联运营
  15. 百度离线地图瓦片图制作
  16. 【信息系统项目管理师】重点整理:高项知识地图
  17. IIS PHP MYSQL出现问题_iis php mysql
  18. 攻防世界---mfw
  19. 同一局域网下,一台电脑连接另一台电脑的虚拟机(从属机(window)连接主机(window)虚拟机(Linux)的连接流程)
  20. 计算机内存条如何区分频率,Win7怎么看内存条频率,教您查看方法

热门文章

  1. ZYNQ PL开发流程
  2. markdown模板
  3. 介绍两款代码自动生成器,帮助提升工作效率
  4. C语言课程设计--推箱子
  5. 小凡Dynamips 虚拟pc的使用
  6. 金山视频云推出QUIC+,畅快直播再升级
  7. html关机命令,自动关机命令 定时关机命令
  8. Vs2015常见错误码:error LNK2019: 无法解析的外部符号;error C2011:类型重定义;
  9. 晨风机器人回复词库_晨风qq机器人词库下载2015 最新完整版
  10. pmp培训机构哪个好?各pmp培训机构排名如何?