图像缩略图的Java类库Thumbnailator

今天经同事介绍了一款java图像缩略图类库Thumbnailator,尝试了下,效果还不错,使用也比较方便,收藏一下。github地址:[url]https://github.com/coobird/thumbnailator[/url],简介和使用范例:[url]https://www.oschina.net/question/76860_25758?sort=default&p=2[/url]

BufferedImage image=ImageIO.read(new File("d://12.jpg"));
//按比例、图片质量缩放 Thumbnails.of(image).scale(0.5f).outputQuality(0.5).toFile("d://14.jpg");
//指定宽高等比缩放:指定的宽高可能不成比例,会依据宽或高调整尺寸,到底依据宽,还是高,采用最小缩放原则
Thumbnails.of(image).size(100, 250).toFile("d://13.jpg");

之前对于等比缩放在具体场景中的使用还存在疑问,如何去确定最终的尺寸?ckfinder实现了图片的等比压缩,研究了下其实现。在ckfinder中设置了imgWidth、imgHeight、imgQuality,最大宽度、高度、图片质量,以下方法去计算最终尺寸:
private static Dimension createThumbDimension(BufferedImage image, int maxWidth, int maxHeight)
Dimension dimension = new Dimension();
if (image.getWidth() >= image.getHeight()) {
if (image.getWidth() >= maxWidth) {
dimension.width = maxWidth;
dimension.height = Math.round(maxWidth / image.getWidth() * image.getHeight());
}else {
dimension.height = image.getHeight();
dimension.width = image.getWidth();
}
}else if (image.getHeight() >= maxHeight) {
dimension.height = maxHeight;
dimension.width = Math.round(maxHeight / image.getHeight() * image.getWidth());
}else {
dimension.height = image.getHeight();
dimension.width = image.getWidth();
}
return dimension;
}
从上述代码可以看出,找出宽、高较大的值使其等于配置中的最大值(大于配置最大值的情况),再按照缩放比例调整对应的宽或者高。确定了尺寸方案,我们就可以结合thumbnailator实现自己的图片压缩。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值