Java使用thumbnailator进行图片压缩缩放裁剪水印旋转处理

Java使用thumbnailator进行图片压缩缩放裁剪水印旋转处理


一、thumbnailator介绍

纯Java开源类库Thumbnailator,由Google提供。支持的操作有:图片压缩、图片缩放,图片裁剪,水印,旋转等

二、使用步骤

1.maven的pom.xml引入如下

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

2.测试代码

//进行图片压缩,图片尺寸不变,压缩图片文件大小outputQuality实现,参数1为最高质量
//scale 图片的压缩比例 值在0-1之间,1f就是原图,0.5就是原图的一半大小
//outputQuality 图片压缩的质量 值在0-1 之间,越接近1质量越好,越接近0质量越差
Thumbnails.of("d:/temp/source.jpg").scale(1f).outputQuality(0.25f).outputFormat("jpg").toFile("d:/temp/target.jpg");

图片尺寸按比例放大或缩小,图片不压缩,scale(0.5f)表示缩小到一半

Thumbnails.of("d:/temp/source.jpg").scale(0.1f).outputQuality(1.0f).outputFormat("jpg").toFile("d:/temp/target.jpg");
//指定大小进行缩放
/*
 * size(width,height) 若图片横比200小,高比300小,不变
 * 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变
 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
 */
Thumbnails.of("d:/temp/source.jpg").size(200, 300).outputQuality(1.0f).outputFormat("jpg").toFile("d:/temp/target.jpg");

不按照比例,指定大小进行缩放,keepAspectRatio(false) 默认是按照比例缩放的

Thumbnails.of("d:/temp/source.jpg").size(200, 300).keepAspectRatio(false).toFile("d:/temp/target.jpg");

旋转,rotate(角度),正数:顺时针 负数:逆时针

Thumbnails.of("d:/temp/source.jpg").size(200, 300).rotate(90).toFile("d:/temp/target.jpg");

水印.watermark(位置,水印图,透明度)

Thumbnails.of("d:/temp/source.jpg").size(300, 200).watermark(Positions.CENTER, ImageIO.read(new File("D:/temp/watermark.png")), 0.5f).toFile("d:/temp/target.jpg");

裁剪

Thumbnails.of("d:/temp/source.jpg").sourceRegion(Positions.TOP_LEFT, 500, 500).size(400, 400).toFile("d:/temp/target.jpg");

转换图片格式

Thumbnails.of("d:/temp/source.jpg").scale(1f).outputFormat("png").toFile("d:/temp/target.png");

输出成文件流OutputStream

		//这里的OutputStream可以换成springboot的response的输出流,这样就可以直接输出到浏览器了
		OutputStream os = new FileOutputStream("d:/temp/target.jpg");
		//同样of方法后面可以接Inputstream输入流,不一定需要文件
		Thumbnails.of("d:/temp/source.jpg").scale(1f).outputFormat("jpg").toOutputStream(os);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值