前言

在我们的日常企业应用开发当中,会碰到很多的图片素材访问的场景。比如社交类应用,您会在朋友圈中存放大量的图片,还有一些在线旅游或者直播的行业,那些图片资源更是不胜枚举,试想我们的用户在移动端或者网页端上传了一张512KB的图片,如果我们在后台没有加以处理就直接丢给前端展示,那对企业的带宽和流量来说,无疑是一个巨大的灾难。因此,随着访问人数的越来越多,存储图片的数量也越来越大,我们一定要对图片进行相应的瘦身,减少它在网络上传输的大小,也能提高系统的访问速度。

由此,本文将重点介绍在Java后台开发应用当中,使用thumbnailator来进行图片资源的裁剪、缩小等瘦身操作,通过Java实际编码的方式加上实际图片的裁剪能实操,让您了解掌握thumbnailator瘦身方法。

一、Thumbnailator概况

1、Thumbnailator是什么?

Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。

2、Thumbnailator能做什么?

Thumbnailator是一款高性能的java缩略图类库。支持的处理操作:图片缩放,区域裁剪,水印,旋转,保持比例。

3、Thumbnailator 的github地址

Thumbnailator是托管在github上的一个开源项目,github地址为:thumbnailator github地址

二、Thumbnailator具体使用步骤

1、使用Maven构建,在Pom.xml中引入相关资源

<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version>
</dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
</dependency>

2、创建一个指定高为160和宽为160的缩略图

Thumbnails.of(new File("E:/ys/IMG_4004.JPG")).size(160, 160).toFile(new File("E:/ys/IMG_4004_160.JPG"));

注意:Thumbnails.of 也可以直接接受一个String类型的文件路径,而不需要传入一个File。这两种形式都是Thumbnails支持的参数。原图是5184*3456的5.51MB的照片

按照160*160裁剪后,生成的结果图已经变得非常小了,大小只占2.5kb,为什么这里的高度不是160呢?你可以思考一下,主要是因为裁剪时为了保持等比率缩小,因此就变成了107.

3、按比例缩放

@Test
public void test() throws IOException {Thumbnails.of("E:/ys/IMG_4004.JPG").scale(0.5).toFile("E:/ys/IMG_4004_scale0.5.jpg");
}

这里可以明显的看到这里得到的结果图片的高度和宽度都是原来的一半。scale参数的值从0-1,中间可以取小数,表示百分比的意思。比如这里设置为0.5表示,表示高度和宽度按照50%来进行缩放。

4、按照图片质量裁剪

组件支持按照最终结果的质量进行缩放,通过设置outputQuality(d),d为一个0-1的值,也是一个百分比的数值。下面的代码表示图片大小保持不变,输出质量为原来的50%。

@Test
public void test3() throws IOException {Thumbnails.of("E:/ys/IMG_4004.JPG").scale(1f).outputQuality(0.3f).toFile("E:/ys/IMG_4004_s1q0.3.jpg");
}

4、旋转和添加水印效果

下面是thumbnails在旋转和质量输出的比例控制,旋转使用角度来进行表示。

@Test
public void test8() throws IOException {BufferedImage watermarkImage = ImageIO.read(new File("E:/ys/yl.jpg"));Thumbnails.of(new File("E:/ys/IMG_4004.JPG")).scale(0.5f).rotate(180)//旋转180度.watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.5f).toFile(new File("E:/ys/IMG_4004_90.JPG"));
}

上图生成出来的结果就是原图旋转了180度,然后在生成的图片的右下角添加一个水印的效果。

其它更多API和例子可以参考:官方示例

三、总结

以上就是今天要讲解的所有内容,本文将重点介绍在Java后台开发应用当中,使用thumbnailator来进行图片资源的裁剪、缩小、旋转、添加水印等基础的裁剪操作,通过Java实际编码的方式对实际图片进行裁剪,让您了解并掌握thumbnailator瘦身方法。

用Java给您的图片瘦身之Thumbnailator技术相关推荐

  1. 七牛数据处理再添新兵——图片瘦身

    在国内的云服务公司中,七牛云首家提供了"图片瘦身"服务,无论是使用了七牛云的对象存储,还是CDN加速服务,都能享受到"图片瘦身"的功能. 在大数据时代的当下,图 ...

  2. PPT图片瘦身/图片提取

    PPT图片瘦身 少量图片 图片放大 - 96ppi压缩 - 图片缩放至合适尺寸 大量图片/不知道哪张图片较大 复制一个PPT,把后缀名改成.rar 解压 - 在media文件夹中找到图片(这个方法也可 ...

  3. 图片瘦身的正确姿势,让你的 CDN 费用省 50% 以上!

    七牛云新推出的图片瘦身功能是做什么的? 打开七牛云的「数据处理」中的「图片瘦身」功能,在图片受到访问时,能够实时对图片进行瘦身,在保证分辨率和画质不变的情况下,可以将图片最高缩小 80%. 当「图片瘦 ...

  4. 让你的 CDN 费用省 50% 以上!图片瘦身的正确姿势

    七牛云新推出的图片瘦身功能是做什么的? 打开七牛云的「数据处理」中的「图片瘦身」功能,在图片受到访问时,能够实时对图片进行瘦身,在保证分辨率和画质不变的情况下,可以将图片最高缩小 80%. 当「图片瘦 ...

  5. java xtend_Eclipse Xtend对Java说:我帮你瘦身

    Java程序员在使用Ruby编程时会有一种解放的感觉,一种从Java那繁琐的语法环境进入一个无拘无束.自由国度的感觉.随着Clojure和Scala等新语言的出现,这种对比的感觉会越来越强烈.Ruby ...

  6. 怎么给java代码瘦身_Eclipse Xtend对Java说:我帮你瘦身

    Java程序员在使用Ruby编程时会有一种解放的感觉,一种从Java那繁琐的语法环境进入一个无拘无束.自由国度的感觉.随着Clojure和Scala等新语言的出现,这种对比的感觉会越来越强烈.Ruby ...

  7. Typora 瘦身 + 标题编号 + 图片同步

    Typora 瘦身 + 标题编号 + 图片同步 1.Why??? 之前使用 PicGo 插件上传图片至阿里云 OSS 服务器,结果导致所有的图片顺序全部乱掉了,于是我直接疯掉了~~~一张一张,修改图片 ...

  8. android APK瘦身全面总结——如何从32.6M到13.6M

    前言 之前我简单介绍了关于svg图片瘦身的问题,在公司,瘦身这个问题是我提出来的,所以这锅我背了.公司项目是32.6M,我给自己的要求就是低于20M.上周花了一个星期瘦身,至于为什么花了一周,主要是s ...

  9. APK瘦身记,如何实现高达53%的压缩效果

    原文链接:http://drops.wooyun.org/mobiledev/14289#more-14289 0x00 我是怎么思考这件事情的 APK是Android系统安装包的文件格式,关于这个话 ...

最新文章

  1. xm文件怎样转换成mp3_酷狗音乐如何将歌曲转换成MP3格式?方法超级简单
  2. 如何用Java代码在SAP Marketing Cloud里创建contact数据
  3. 数据科学中的数据可视化
  4. keras卷积处理rgb输入_CNN卷积神经网络模型搭建
  5. 从梯度下降到ADMM-学习记录
  6. python 相对路径报错_小白学 Python(18):基础文件操作
  7. android在activity之间传递map类型值
  8. Qt5 QtQuick系列----QtQuick的Secne Graph剖析(1)
  9. [Linux] ubuntu server sudo出现sudo:must be setuid root 完美解决办法
  10. 有趣的问题:C的表达式x == x,何时为假?!
  11. 社区计算机基础知识,社区计算机基础知识试题及答案.doc
  12. 如何下载m3u8格式视频
  13. PHP汉字取拼音缩写
  14. latex显示错误:Text line contains an invalid character. l.1
  15. JS与C语言的数据类型转换
  16. Arduino基础入门篇12—火焰报警器
  17. ios 自定义键盘的按键音效和震动效果
  18. android 单反相机_什么是数码单反相机作物因子(以及我为什么要关注)
  19. 解决AD中pcb原件移动提示绿色报错问题
  20. 高光谱遥感数值建模技术及在植被、水体、土壤信息提取领域应用技术

热门文章

  1. NS-3教程(2):NS-3简单介绍
  2. Qt学习笔记之Qt软件的打包发布
  3. Redis 9种数据结构
  4. ppt模板页面过渡动画效果怎么制作?
  5. 新疆、内蒙、青海三省区骆驼齐聚柴达木上演“激情与速度”
  6. 台式机通过网线与使用wifi的笔记本上网
  7. JAVA毕业设计HTML5寿光农产品资源展示平台计算机源码+lw文档+系统+调试部署+数据库
  8. 服装进销存2022年排行榜,新手小白必看!
  9. AUTODESK 卸载工具,完美彻底卸载清除干净autodesk各种软件残留注册表和文件
  10. 双鱼和射手怎样能合拍(图