Java 图片文件过大 但是需要对图片进行展示

前言
背景

对于javaweb服务端开发人员,图片资源的管理总是绕不开的一环。很多网站上都会提供上传图片这个功能,而现代数码设备拍摄出来的都是高清图片,分辨率很高,占用的空间也很大。物理存储的问题还算容易解决,但是网络带宽太紧张了。一个页面动则就几十M,那加载速度,想想也是够了,所以图片的压缩就必不可少了。
 

Thumbnailator简介
介绍

对于图片处理,JDK中也提供了对应的工具类,不过处理起来会很麻烦,而Thumbnailator是一个Google开源的优秀图片处理的第三方Java类库,处理效果远比Java API的好。
Thumbnailator可以使用很少的代码实现图片的压缩功能,当然了,Thumbnailator也提供给图片缩放、旋转与加水印等功能。

使用方式
github地址
https://github.com/coobird/thumbnailator
maven的地址

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

原图(200px*162px)


1.图片压缩

Thumbnails.of("原图文件的路径")
        .scale(0.5)
        .toFile("压缩后文件的路径");



宽高缩放50%
压缩图(100px*81px)


Thumbnails.of("原图文件的路径")
    .size(100, 75)
.toFile("压缩后文件的路径"); 

设置宽高最大值,等比例缩小
压缩图(93px*75px)


Thumbnails.of("原图文件的路径")
    .scale(1.0, 0.5)
.toFile("压缩后文件的路径");
1
2
3
设置宽为原图100%,高为原图50%,非等比例缩放
压缩图(200px*81px)

其中,
scale: 按照比例进行缩放。范围:0.0~N。
scale(0.5) 宽高比例都是50%缩放 , scale(1,0.5) 宽不变,高为50%缩放
size:指定大小进行缩放 size(100, 75)
若图片宽比100小,高比75小,不变
若图片宽比100小,高比75大,高缩小到75,图片比例不变
若图片宽比100大,高比75小,宽缩小到100,图片比例不变
若图片宽比100大,高比100大,图片按比例缩小,宽缩小到100或高缩小到75,但要保证宽小于等于100,高小于等于75

2.图片旋转

Thumbnails.of("原图文件的路径")
.scale(0.8)
.rotate(90)
.toFile("转换后文件的路径");

1
2
3
4
5
Thumbnails.of(“原图文件的路径”)
.size(40,40)
.rotate(90)
.toFile(“转换后文件的路径”);


1
压缩图

其中,
rotate(角度): 正数:顺时针 负数:逆时针
scale,size 必须有一个有值

3.加水印

File image = new File("水印图片地址");
Thumbnails.of("原图文件的路径")
.scale(0.8)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(image), 0.5f)
.toFile("转换后文件的路径");
1
2
3
4
5
压缩图

其中
Watermark:添加水印 watermark(位置,水印图,透明度)

4.修改文件格式
Thumbnails.of(“原图文件的路径”)
.scale(1f)
.outputFormat(“jpg”)
.toFile(“转换后文件的路径”);

其中,
outputFormat:设置转换后图片格式,之前听说该属性设置为png时,scale缩放属性无效,测试用0.4.8的版本已经能正常缩放了

5.不改变宽高,压缩大小

Thumbnails.of("原图文件的路径")
        .scale(1f)
        .outputQuality(0.5f)
        .toFile("压缩后文件的路径");
1
2
3
4
其中,
outputQuality: 输出的图片质量,范围:0.0~1.0,1为最高质量.
————————————————
版权声明:本文为CSDN博主「s12s12c12」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/s12s12c12/article/details/106127596

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值