Thumbnailator是一款不可多得的处理图片的第三方工具包,它写法简单到让人无法相信,Java本身也有处理图片压缩的方法,但是代码冗长到让人痛不欲生,在篇末会给出Java本身的实现方式,做下对比,已体现Thumbnailator的强大。前段时间做分期的一种相对简单的业务,需要传递用户的身份信息,相关合同信息等相关图片(做个业务传这么多图片,我是用户肯定say goodbye了,不忍吐槽),其实图片上传后不需要显示大图,只需要缩略图而已,在另外的审核页面才需要这样的原图。说了这个背景,那解约图片太大传输太慢,严重影响体验(这样说显得高大上,其实我们部署了四个节点,而且对用户资质要求严格,用户量不会很大......),就拿时间解决下图片压缩的问题,就查到了这个Thumbnailator工具包,今天顺便就把这个的主要用法写下来,以后遇到直接拿来了,原图就用女神-斯嘉丽约翰逊吧,哈哈哈。

  好,上一张原图

  其余压缩或者处理过的图片就放到demo目录下,在文末会给出地址

  这里方便都直接转换成文件了,其实可以转成流的用于传输(我是废话了...)

一.  Thumbnailator对图片的处理 

  1.Thumbnailator对图片进行指定尺寸的压缩。

 String result = "src/main/resources/images/";
2 Thumbnails.of(result + "sijili.jpg").size(200, 300).toFile(result + "image_200x300.jpg");

  2.Thumbnailator对图片进行指定比例的压缩。

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(0.5f).toFile(result + "image_0.5f.jpg");

  3.Thumbnailator对图片进行旋转。

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(1.0f).rotate(180).toFile(result + "image_r180.jpg");

4.Thumbnailator对图片进行格式转换。

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(1.0f).outputFormat("png").toFile(result + "image_sijiali.png");

5.Thumbnailator对图片进行剪裁。

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(1.0f).sourceRegion(Positions.CENTER, 400, 400).toFile(result + "image_center.png");
Thumbnails.of(result + "sijili.jpg").sourceRegion(100, 100, 100, 100).scale(1.0f).toFile(result + "image_100_4.jpg");

6.Thumbnailator对图片进行加水印操作。

String result = "src/main/resources/images/";
// watermark 参数 1.位置 2.水印图片 3.透明度

Thumbnails.of(result + "sijili.jpg").scale(1.0f).watermark(Positions.CENTER, ImageIO.read(new File(result + "warter.jpg")), 0.25f).toFile(result + "image_warter.jpg");

  7.Thumbnailator对图片进行加文字水印操作。

String result = "src/main/resources/images/";

BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);

Graphics2D g = bi.createGraphics();

g.setColor(Color.LIGHT_GRAY);

g.drawRect(0, 0, 10, 10);

char[] data = "liudTest".toCharArray();

g.drawChars(data, 0, data.length, 5, 32);

// watermark 参数 1.位置 2.水印 3.透明度


Thumbnails.of(result + "sijili.jpg").scale(1.0f).watermark(Positions.CENTER, bi, 1.0f).toFile(result + "image_warter_liud.jpg");

Thumbnailator对图片进行加文字水印的方式,并不推荐,可以先对文字处理成图片之后在加水印,看上面代码的冗长也不符合Thumbnailator的风格不是。

二 . Java原生对图片的处理

String result = "src/main/resources/images/";

OutputStream os = new FileOutputStream(result + "sijili_out.jpg");
Image image = ImageIO.read(new File(result + "sijili.jpg"));

BufferedImage bufferedImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);


bufferedImage.getGraphics().drawImage(image.getScaledInstance(100, 100, image.SCALE_SMOOTH), 0, 0, null);

ImageIO.write(bufferedImage, "jpg",os);


os.close();

关于图片处理就先总结到这,代码的地址就放到我的github下了,地址是https://github.com/liujava/myDailyNote,欢迎下载,并提出意见。

java使用Thumbnailator处理图片的更多相关文章

  1. Java使用jmagick处理图片遇到的异常

    java通过ImageMagick处理图片遇到问题: 下面异常都是我一个一个遇到的: 异常1: Exception in thread "main" java.lang.Unsat ...

  2. Java语言利用Google的Thumbnailator处理图片

    导读:在Java中制作高质量的缩略图可能是一项相当困难的任务,或者图片质量高页面加载慢等等原因使需要对图片进行处理,但是又不想写太多的代码太麻烦去处理图片,那么就可以使用Thumbnailator—— ...

  3. java使用Thumbnailator操作图片

    Thumbnailator 是一个用来生成图像缩略图.裁切.旋转.添加水印等操作的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图. Thumbnailato ...

  4. Java三方---->Thumbnailator框架的使用

    Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图.有了它我们就不用在费心思使用Image I/O API,J ...

  5. 【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】

    Thumbnailator概述:     Thumbnailator是与Java界面流畅的缩略图生成库.它简化了通过提供一个API允许精细的缩略图生成调整生产从现有的图像文件的缩略图和图像对象的过程, ...

  6. java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)

    最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...

  7. Thumbnailator处理图片

    读取源图 of(String... files) of(File... files) of(InputStream... inputStreams) of(URL... urls) 输出文件 toFi ...

  8. Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理

    前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...

  9. java基础---->Java中图片的缩放

    缩略图代表网页上或计算机中图片经压缩方式处理后的小图 ,其中通常会包含指向完整大小的图片的超链接.缩略图用于在 Web 浏览器中更加迅速地装入图形或图片较多的网页.今天,我们就开始java中图像的缩略 ...

随机推荐

  1. 程序员(媛)Shell脚本必备技能之中的一个: 在Linux下怎样自己主动备份mysql数据

    作者:荀彧(花名) Background:鉴于QAS数据库曾遭到毁灭性损害.极其桑心L.为了避免这样的玉石俱焚的状况再度发生.于是我们找出了一种应对方案.这里给大家分享一下怎样实现定时备份mysql数 ...

  2. 2016.04.11,英语,《Vocabulary Builder》Unit 12

    umbr, from the Latin umbra, 'shadow', umbrella, -ella, 'little', means 'little shadow'. adumbrate: [ ...

  3. How do you install Google Chrome on Ubuntu?

    https://askubuntu.com/questions/510056/how-to-install-google-chrome sudo apt-get install chromium-br ...

  4. cas-client-core单点登录排除不需要拦截的URL

    同事提了一个要求,要求对外提供的接口不需要经过单点登录验证,我刚开始想,这简单,提供不需要拦截的url数组,在AuthenticationFilter里面对url进行检查,在此数组内,就不需要拦截. ...

  5. css中!important的用法

    {*rule !important}这个css规则当今在网页制作的时候的普及已经非常流行了,以前我对它的理解就停留在‘浏览器是否识别阶段’ 而没有真正去研究过,可是现在发生了变化.众所周知,!impo ...

  6. [XJOI]noip43 T2多人背包

    多人背包 DD 和好朋友们要去爬山啦!他们一共有 K 个人,每个人都会背一个包.这些包的容量是相同的,都是 V.可以装进背包里的一共有 N 种物品,每种物品都有给定的体积和价值.在 DD 看来,合理的 ...

  7. 同一sql程序执行比数据库执行慢

    最近项目发现同一个sql在java端执行比在数据库执行慢很多,原因可能是程序的sql参数类型与数据库字段的类型不一致.

  8. Git Learning Part I - Install Git and configure it

    Why we need 'Git' GIt version control: 1. record the history about updating code and deleting code 2 ...

  9. INFORMIX MATCHES的使用详解

    MATCHES  运算符返回 TRUE ,如果一个字符串与给定的掩码匹配. 语法 expr  [NOT]  MATCHES  mask   [ ESCAPE "char" ] ex ...

  10. (转载)activity外部调用startActivity的new task异常解析

    activity外部调用startActivity的new task异常解析 泡在网上的日子 / 文 发表于2013-09-07 12:45  第1314次阅读 异常,android,activity ...