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

Posted yelangking1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java给您的图片瘦身之Thumbnailator技术相关的知识,希望对你有一定的参考价值。

前言

       在我们的日常企业应用开发当中,会碰到很多的图片素材访问的场景。比如社交类应用,您会在朋友圈中存放大量的图片,还有一些在线旅游或者直播的行业,那些图片资源更是不胜枚举,试想我们的用户在移动端或者网页端上传了一张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技术的主要内容,如果未能解决你的问题,请参考以下文章

Android 瘦身之道

iOS之性能优化·内置图片瘦身

用什么方法给图片文件瘦身变小

使用ImageMagick给图片瘦身

微信小程序瘦身器-协助微信小程序瘦身

Android APK瘦身大法——SVG图片瘦身