如何使用Java给您的图片瘦身之Thumbnailator技术

作者:yelangking1 时间:2023-10-31 10:25:52 

前言

在我们的日常企业应用开发当中,会碰到很多的图片素材访问的场景。比如社交类应用,您会在朋友圈中存放大量的图片,还有一些在线旅游或者直播的行业,那些图片资源更是不胜枚举,试想我们的用户在移动端或者网页端上传了一张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的照片

如何使用Java给您的图片瘦身之Thumbnailator技术

如何使用Java给您的图片瘦身之Thumbnailator技术

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

如何使用Java给您的图片瘦身之Thumbnailator技术

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%来进行缩放。

如何使用Java给您的图片瘦身之Thumbnailator技术

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");
}

如何使用Java给您的图片瘦身之Thumbnailator技术

4、旋转和添加水印效果

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

如何使用Java给您的图片瘦身之Thumbnailator技术

@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"));
}

如何使用Java给您的图片瘦身之Thumbnailator技术

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

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

如何使用Java给您的图片瘦身之Thumbnailator技术

三、总结

来源:https://blog.csdn.net/yelangkingwuzuhu/article/details/127151913

标签:java,thumbnailator,压缩
0
投稿

猜你喜欢

  • Android编程动态按钮实现方法

    2021-12-31 18:05:17
  • MyBatis-Plus 自定义sql语句的实现

    2022-12-24 23:16:16
  • 详解java构建者模式Builder

    2021-11-16 18:49:32
  • UGUI ScrollRect滑动定位优化详解

    2021-12-06 09:56:13
  • 基于C#解决库存扣减及订单创建时防止并发死锁的问题

    2023-03-16 20:59:53
  • Java对世界不同时区timezone之间时间转换的处理方法

    2023-11-08 13:19:30
  • C# 实现颜色渐变窗体控件详细讲解

    2021-12-31 07:10:28
  • MyBatis学习教程(五)-实现关联表查询方法详解

    2021-06-23 21:04:04
  • Android实现自动点击无障碍服务功能的实例代码

    2022-08-31 12:14:26
  • Android图片占用内存全面分析

    2023-02-20 01:05:38
  • Java switch使用原理及实例解析

    2023-10-11 20:44:20
  • Android自定义SwipeLayout仿QQ侧滑条目

    2023-12-06 14:24:25
  • Java如何将大文件切割成小文件

    2022-12-27 07:40:40
  • Spring Cloud整合XXL-Job的示例代码

    2021-06-09 06:01:59
  • Mybatis-Spring源码分析图解

    2023-07-18 13:35:07
  • Android基于SoftReference缓存图片的方法

    2023-07-13 00:53:21
  • 基于SpringMVC的全局异常处理器介绍

    2023-11-23 20:55:58
  • 基于Spring Mvc实现的Excel文件上传下载示例

    2022-01-22 02:02:56
  • 使用Spring Cloud Feign上传文件的示例

    2021-08-25 04:37:38
  • Android实现ListView控件的多选和全选功能实例

    2023-01-04 02:26:50
  • asp之家 软件编程 m.aspxhome.com