thumbnailator是谷歌处理图片的开源工具类,能够对图片进行缩放,旋转,压缩,剪裁,添加水印,转换格式等;html
maven引入:git
net.coobird
thumbnailator
0.4.8
基本使用Demo:github
/**
* 2019年4月17日下午10:51:07
*/
package testThumbnailator;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
/**
* @author xinwenfeng
*
*/
public class TestThumbnailator {
//API文档:http://coobird.github.io/thumbnailator/javadoc/0.4.8/net/coobird/thumbnailator/package-summary.html
/**
* @param args
*/
public static void main(String[] args) {
try {
Thumbnails.of("BL_pre.jpg")
.sourceRegion(Positions.CENTER, 500, 500)
//.size(200, 300)
//.width(100)
//.height(200)
//.forceSize(400, 400)
.scale(0.8d)
//.scale(0.5d, 0.8d)
//.keepAspectRatio(false)
//.rotate(90d)
.watermark(Positions.CENTER, ImageIO.read(new File("watermark.png")), 0.8f)
.outputQuality(0.75f)
.outputFormat("JPEG")
//.asBufferedImage()
.toFile("out.jpeg");
} catch (IOException e) {
e.printStackTrace();
}
}
}
原图:api
水印:oracle
处理后:maven
注:处理的图片必须指定大小,size,width,height,forcesize,scale;不可重复设置同一种类型的属性;有的属性设置会互斥;工具
1.读入源图片
能够批量处理,多个文件或者文件夹;ui
Thumbnails.url
Thumbnails.File... files) 从文件或者文件夹读入源;
Thumbnails.InputStream... inputStreams) 从流读入源;
Thumbnails.String... files)
Thumbnails.URL... urls)
2.设置大小,按比例或者拉伸
. 按比例,使原图撑满size大小;
. 设置宽,高按比例;
. 设置高,宽按比例;
. 设置宽高,不按比例,会按照设置的宽高拉伸;
. 按比例缩放,0~1缩小,1原比例,>1放大;
. 长宽各自设置比例,会拉伸;
.
.
注:size、width/height、scale、forceSize不能并用;size至关于width+height;forceSize至关于设置长款+keepAspectRatio=false,因此forceSize不能跟其余设置长款属性、keepAspectRatio并用;
3.剪裁
. 剪裁原图,坐标x,y起始,剪裁出宽度width高度height的图像,x向右为正,y向下为正,width(向右)和height(向下)必须大于0;
.Position position, int width, int height) 剪裁原图,区域位置position可用Positions枚举的9个位置或者实现Position接口的实现类;
.
4.旋转
. 旋转角度,顺时针为正;
5.水印
.
.BufferedImage image, float opacity) 中心位置,opacity的不透明度设置水印(0.0<=opacity<=1.0);
.Position position, BufferedImage image, float opacity) 在position位置,opacity不透明度设置水印;
6.质量
. 质量0.0<=quality<=1.0;
.
7.输出格式
.
8.输出图片
.
.
.
.File destinationDir, Rename rename) 返回文件列表,并按照指定的重命名规则生成到指定目录里(文件夹要存在);
.
.String outFilepath)
.File destinationDir, Rename rename) 无返回,按照重命名规则生成到文件夹里;
. 设置是否覆盖已存在的文件(只对toFile、toFiles、asFiles有效);
其余方法和功能见api