Thumbnails进行图片处理:缩放、水印、裁剪

一、简介

Thumbnailator是一个非常优秀的图片处理开源Java类库,处理效果极好,使用非常简单,极大的简化了代码量。同时支持批量处理。

二、maven依赖

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

三、Thumbnails.of()

Thumbnails可以读取本地图片、url图片等。使用方法如下,读取指定url图片,scale(0.5f),将尺寸缩减一半儿。.outputQuality(0.5f),输出质量降低一半儿。最后输出到文件或者输出流中。

ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Thumbnails.of(url).scale(0.5f).outputQuality(0.5f).toOutputStream(outStream);

四、添加水印

Thumbnails.of(url).scale(0.5f).watermark(Positions.CENTER,ImageIO.read(waterPic),0.5f) .outputQuality(0.8f).toFile(toPic);

五、裁剪

//压缩至指定图片尺寸,保持图片不变形,多余部分裁剪掉
//压缩至指定图片尺寸(例如:横400高300),保持图片不变形,多余部分裁剪掉
BufferedImage image = ImageIO.read(fromPic); 
Builder builder = null; 
int imageWidth = image.getWidth(); 
int imageHeitht = image.getHeight(); 
if ((float)300 / 400 != (float)imageWidth / imageHeitht) { 
	if (imageWidth > imageHeitht) { 
		image = Thumbnails.of(fromPic).height(300).asBufferedImage(); 
	} else { 
		image = Thumbnails.of(fromPic).width(400).asBufferedImage(); 
	} 
	builder = Thumbnails.of(image).sourceRegion(Positions.CENTER, 400, 300).size(400, 300); 
} else { 
	builder = Thumbnails.of(image).size(400, 300); 
} 
builder.outputFormat("jpg").toFile(toPic); 
//scale 参数是浮点数,大于1表示放大,小于1表示缩小
//outputQuality 参数是浮点数,质量压缩,0-1之间 
//keepAspectRatio 在调整尺寸时保持比例,默认为true,如果要剪裁到特定的比例,设置为false即可 

*注意:scale、width|height、size三者不能同时共存,但必须要有一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值