我们在工作中常常会遇到图片处理的功能。有很多的工具类都可以实现。今天给大家推荐一个特别简单好用的类——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);
他的功能还是很强大的,使用也很简单。希望可以帮到大家!