【工作点滴】——thumbnailator实现图片的压缩和裁切

本文介绍了Thumbnailator这一高效的Java图片处理库,提供了详细的使用教程,包括通过maven引入jar包,以及如何进行图片的缩放、按比例调整大小和裁剪操作,帮助开发者快速实现图片处理功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       我们在工作中常常会遇到图片处理的功能。有很多的工具类都可以实现。今天给大家推荐一个特别简单好用的类——Thumbnailator。Thumbnailator是一个优秀的图片处理的开源Java类库,用起来十分简单。下面跟大家介绍一下他的使用方法。

一、引jar包

1.  jar包下载地址

2.  maven引入jar包

<dependency>  
    <groupId>net.coobird</groupId>  
    <artifactId>thumbnailator</artifactId>  
    <version>0.4.5</version>  
</dependency>  


二、简单使用举例

为了方便大家的查看,把我的import也给大家展示一下:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.Thumbnails.Builder;
import org.junit.Test;

我们可以直接写个单元测试类,也可以直接写个java类,直接运行就可以。

我的代码均在这个方法体内运行:

@Test
	public void testHandlePicture() throws IOException {

  }

先创建原始图片目录

File fromPic = new File("src/picture/yuan.jpg");
BufferedImage image = ImageIO.read(fromPic); 
//得到图片的高和宽
int imageWidth = image.getWidth();  
int imageHeitht = image.getHeight(); 


创建结果图片的输出目录及名称

File toPic = new File("src/picture/result.jpg");

1.按指定尺寸对图片进行缩放,如果图片不符合400*500,会遵循原图按比例缩放到400*某个高度

Thumbnails.of(fromPic).size(400, 500).toFile(toPic);

2.按比例进行放大和缩小,会遵循原图比例放大或缩小相应的倍数,scale为倍数设置

Thumbnails.of(fromPic).scale(0.2f).toFile(toPic);//按比例缩小  
Thumbnails.of(fromPic).scale(2f).toFile(toPic);//按比例放大


3.按照指定的尺寸进行缩放,不遵循原图大小

Thumbnails.of(fromPic).size(100, 100).keepAspectRatio(false).toFile(toPic); 

keepAspectRatio属性:在没有设定 keepaspectratio 选项时, 给定图形的高度(全部高度)和宽度会导致图形被不对称缩 放来满足所设定的高和宽。在设定 keepaspectratio  选项后,给定图形的高度(全部高度)和宽度时,图形会 保持原有的宽高比例,尽可能使得图形满足所设定的高和宽, 但是图形不会超出其中任一个。

保持图片大小不超过650*900,会尽可能满足所设定的高和宽。

Thumbnails.of(fromPic).size(650, 900).keepAspectRatio(true).toFile(fromPic);

4.旋转图片,totate为旋转角度,负数则为逆时针旋转

Thumbnails.of(fromPic).size(200,200).rotate(90).toFile(toPic); 

5.压缩图片大小,但不改变图片尺寸。outputQuality参数1为最高质量

Thumbnails.of(fromPic).outputQuality(0.25f).toFile(toPic1);

6.裁剪图片,sourceRegion裁剪属性,Positions.CENTER表示中心裁剪300*300的大小,也可以是Positions.TOP_CENTER等其他属性

Thumbnails.of(fromPic).sourceRegion(Positions.CENTER,300,300)  
.size(300,300).toFile(toPic); 

还可以根据坐标裁剪

Thumbnails.of(fromPic).sourceRegion(0,0,200,200)  
.size(300,300).toFile(toPic); 

7,还可以改变输出文件的名称和路径,改变图片的格式

Thumbnails.of(fromPic).scale(1f).outputFormat("png")  
.toFile("picture/png格式的图片.png");  

8.文件也可以输出成BufferedImage或者OutputStream

//输出成文件流OutputStream  
OutputStream os=new FileOutputStream(toPic);  
Thumbnails.of(fromPic).size(120,120).toOutputStream(os);  

//输出BufferedImage,asBufferedImage()返回BufferedImage  
BufferedImage bi=Thumbnails.of(fromPic).size(120,120).asBufferedImage();  
ImageIO.write(bi,"jpg",toPic); 

他的功能还是很强大的,使用也很简单。希望可以帮到大家!





                
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值