本人博客全部迁至个人博客,柒情博客:http://www.ityw.club ,后续所有博客将在柒情博客上进行更新。
今天工作遇到了一个需要剪切图片的需求,用awt感觉挺麻烦的,偶然在网上看到了thumbnailator,发现thumbnailator能实现我的需求,于是就找了下资料,不过网上thumbnailator的资料也不是很完善,今天在这里总结下吧,方便自己以后使用。
先通过maven导入jar
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.5</version>
</dependency>
简单的几个方法
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ThumbnailatorUtils {
public static void main(String[] args) {
String inputImgPath="E:/img/c.jpg";
String OutputImgPath="E:/img/d.jpg";
imgCut(inputImgPath,OutputImgPath,0,0,600,3000,1,1000,3000);
System.out.println(111);
}
/**
*
* @param inputImgPath 输入路径 E:/img/c.jpg
* @param OutputImgPath 输出路径 E:/img/d.jpg
* @param x 横坐标
* @param y 纵坐标
* @param cutWidth 剪切的宽度
* @param cutHeight 剪切的高度
* @param yesOrNoCustom 是否自定义宽高 1:是 2:否
* @param customWidth 自定义宽
* @param customHeight 自定义高
*/
public final static void imgCut(String inputImgPath,String OutputImgPath,int x,int y,int cutWidth,int cutHeight,int yesOrNoCustom,int customWidth,int customHeight){
File file=new File(inputImgPath);
BufferedImage image;
try {
image = ImageIO.read(file);
//得到图片的高和宽
int imageWidth = image.getWidth();
int imageHeitht = image.getHeight();
File toPic = new File(OutputImgPath);
if(yesOrNoCustom==1){
//剪切后自定义尺寸输出
Thumbnails.of(file).sourceRegion(x,y,cutWidth,cutHeight).forceSize(customWidth,customHeight).toFile(toPic);
}else {
Thumbnails.of(file).sourceRegion(x,y,cutWidth,cutHeight).forceSize(cutWidth,cutHeight).toFile(toPic);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 原尺寸改变图片类型,如bmp,jpg,png等
* @param inputImgPath 输入路径 E:/img/c.jpg
* @param OutputImgPath 输出路径 E:/img/d 不需要带文件后缀
* @param imgType 想要转换的类型
*/
public final static void imgChangeType(String inputImgPath,String OutputImgPath,String imgType){
try {
Thumbnails.of(inputImgPath)
.scale(1f)
.outputFormat(imgType)
.toFile(OutputImgPath);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 压缩jpg图片,只对jpg有用
* @param inputImgPath 输入路径 E:/img/c.jpg
* @param OutputImgPath 输出路径 E:/img/d 不需要带文件后缀
*/
public final static void imgCompress(String inputImgPath,String OutputImgPath){
try {
Thumbnails.of(inputImgPath)
.scale(1f)
.outputQuality(0.25f)
.outputFormat("jpg")
.toFile(OutputImgPath);
} catch (IOException e) {
e.printStackTrace();
}
}
TODO:
另外还有一些关于thumbnailator的博客地址
https://blog.csdn.net/mengmei16/article/details/71081383
https://blog.csdn.net/wangpeng047/article/details/19624993
https://www.cnblogs.com/qingruihappy/p/7846973.html
https://my.oschina.net/jrrx/blog/734868?utm_source=debugrun&utm_medium=referral