用java给您的图片瘦身之thumbnailator技术(代码片段)

yelangking1 yelangking1     2022-12-05     697

关键词:

前言

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

android瘦身之道

...结构就已经固定了。res目录下的资源文件。(通常是压缩图片,比如矢量图-->webp-->png等。)src目录下的java文件。(通常是混淆,压缩等。)asset目录下的资源文件。(类似res目录。)lib目录下的第三方库。(gradle依赖的其... 查看详情

ios之性能优化·内置图片瘦身(代码片段)

一、iOS内置资源的集中方式①将图片存放在bundle将图片存放在bundle,是一种很常见的方式,项目中各类文件分类放在各个bundle下,项目既整洁又能达到隔离资源的目的。采用bundle的加载方式为[UIImageimageNamed:“xx.bundle/x... 查看详情

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

我们在日常工作生活中会遇到比较大的图片文件,这些图片文件我们使用者不方便,不管是上传还是其它的都会很麻烦,今天教给大家一种将图片文件瘦身变小的方法。1:在浏览器搜索图片压缩,进入到这样一个在线压缩的网... 查看详情

计算给您的客户的最少更改量

】计算给您的客户的最少更改量【英文标题】:Countingtheleastamountofchangetogiveyourclient【发布时间】:2019-01-0616:07:19【问题描述】:我正在尝试计算剩余的硬币数量,以便为客户提供最少数量的硬币。但是最后一枚硬币0.01总是算错... 查看详情

我们目前无法处理您的付款,请稍后再试。给您带来的不便,我们深表歉意

】我们目前无法处理您的付款,请稍后再试。给您带来的不便,我们深表歉意【英文标题】:Wecan\'tprocessyourpaymentrightnow,sopleasetryagainlater.We\'resorryfortheinconvenience【发布时间】:2021-08-0413:58:48【问题描述】:我正在尝试使用PaypalAda... 查看详情

android性能优化之apk瘦身详解(瘦身73%)(代码片段)

公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了。可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段。... 查看详情

gemini2使用方法分享,让您的电脑大瘦身~

操作系统在我们的日常生活中起到非常重要的作用,也分为不同的类型,其中最具有代表的就是windows、macos、linux这三大系统,它们之间有什么区别呢?我们来看看。  Windows系统:微软旗下的收费操作系统,也是当前市场占有... 查看详情

c盘清理瘦身之道(代码片段)

C盘清理瘦身之道文章目录C盘清理瘦身之道删除无用文件磁盘清理修改桌面位置关闭磁盘休眠功能修改虚拟内存位置工具FolderSizeDism++DriverStoreExplorerWICleanupUI删除无用文件可删除的目录文件参考如下批处理脚本:@echoof... 查看详情

清理ios工程里无用的图片,可瘦身ipa

...瘦身,而瘦身ipa效果明显的,主要通过清理程序里的无用图片。推荐一个清理图片的应用 https://github.com/tinymind/LSUnusedResources直接打开运行,点击Browse..选择工程目录,再点击Search搜索出该搜索工具认为工程里没有用到的图片,... 查看详情

java之文件复制图片下载

用java打造属于自己的爬虫网络上的图片太多一个一个的保存实在太浪费时间基于此就使用了java做了一个小工具功能是文件的复制以及网络上图片的下载首先是IOUtlis类的创建packagehh;importjava.io.FileInputStream;importjava.io.FileOutputStream;i... 查看详情

androidapk包体瘦身(代码片段)

AndroidAPK包体瘦身系列瘦身原因图片瘦身国际化处理SO包优化移除无用资源资源混淆瘦身原因大数据统计,一定的范围小,用户的下载意愿与包体大小成正比,当包体超过一定的界限值时,用户的下载意愿就会断崖... 查看详情

ios之深入解析appthinning的应用瘦身优化流程(代码片段)

当前iOSApp的编译打包方式是把适配兼容多个设备的执行文件及资源文件合并一个文件,上传和下载的文件则包含了所有的这些文件,导致占用较多的存储空间。AppThinning是一个关于节省iOS设备存储空间的功能,它可以... 查看详情

用hash算法给payload瘦身(代码片段)

理论基础:假设需要弹出一个MessageBox,那么至少需要使用到以下这些API或模块:GetProcAddress()------>14ByteLoadLibraryExA()------->14ByteExitProcess()------------->11ByteUser32.dll()--------------->10ByteMessageBox()------ 查看详情

怎样把下载到卓面的向日葵用微信发送给好友

您可以通过以下步骤将下载到的向日葵发送给您的好友:1.打开微信,点击右上角的“+”号,选择“发送照片/视频”;2.选择您要发送的向日葵照片;3.选择您要发送的好友,点击发送;4.发送完成后,您的好友就可以收到您发... 查看详情

ios给viewcontroller减负之uitableview

 今天看了一些博客文章分享了如何给ViewController瘦身的问题,其中一个就是tableView. 的确,随着产品迭代,VC里面可能越来越臃肿,有时候真的需要好好进行一次瘦身.可能是参考的博客中讲解更侧重于方法的复用,其实这个真的... 查看详情

译:1.rabbitmqspringamqp之helloworld

...,您可以确定邮件先生或Mailperson女士最终会将邮件发送给您的收件人。在这个比喻中,RabbitMQ是邮箱,邮局和邮递员 查看详情

ios安装包瘦身(代码片段)

...xff0c;风险也相对较小。由于app内有优化空间的资源主要为图片,故本文中“资源”与“图片”可认为是等价词汇。排查和清除冗余图片删除重复的资源图片压缩将图片放置到云端1.1排查和清除冗余图片整个排查和清除冗余图... 查看详情

ios瘦身!一个让50%本地图片消失的方案(代码片段)

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇一、背景好久没写文章了,看了掘金的年度报告,感觉还挺有意思,赶在春节前向各位大佬拜个早年前,聊聊我最近的做一个方案的思... 查看详情