欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Java使用Thumbnails进行图片处理

Java使用Thumbnails进行图片处理

2024/11/14 6:05:26 来源:https://blog.csdn.net/nonagontech/article/details/143751588  浏览:    关键词:Java使用Thumbnails进行图片处理

一、前言

在做网站的时候经常会遇到图片加载的比较慢的问题,希望能够快一些。大多数情况下,我们在上传图片的时候是将原图片上传上去了,也就是图片实际多大就会显示多大。

很多情况中,网站的图片是非常大的,有的时候回超过10M甚至更大,那么网页在加载的时候当然会比较慢。

那么有没有什么方法既可以保证我们的图片清晰度又可以让我们的图片小一些呢?当然有,Thumbnails提供了图片的缩放、旋转、水印以及裁剪的功能

参考链接

名称地址
官方地址http://code.google.com/p/thumbnailator/

二、API介绍

API说明
Thumbnails.of(src).scale(0.2f).toFile(desc)按比例缩小
Thumbnails.of(src).scale(2f).toFile(desc)按比例放大

Thumbnails.of(src).size(100,100).keepAspectRatio(false).toFile(desc) 

Thumbnails.of(src).forceSize(100,100).toFile(desc)

不按比例,就按指定的大小进行缩放 
Thumbnails.of(src).scale(1f).outputQuality(0.25f).toFile(desc)图片尺寸不变,压缩图片文件大小 outputQuality(图像质量)   1为最高质量
Thumbnails.of(src).size(400,400).watermark(Positions.CENTER,ImageIO.read(waterPic),0.5f) .outputQuality(0.8f).toFile(desc)给图片加水印,watermark(位置,水印图,透明度)      Positions.CENTER 表示加在中间
Thumbnails.of(src).scale(1f).outputFormat("png") .toFile(desc)转换图片格式,用 outputFormat(图像格式) 转换图片格式,保持原尺寸不变 
Thumbnails.of(src).size(120,120).toOutputStream(os)输出成文件流OutputStream
Thumbnails.of(src).size(120,120).asBufferedImage()输出成BufferedImage  asBufferedImage() 返回BufferedImage BufferedImage

三、操作流程

1.引入依赖

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

2.代码演示

图片功能裁剪

//保持图片不变形,多余部分裁剪掉
//压缩至指定图片尺寸(例如:横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、width|height、size三者不能同时共存,但必须要有一个

web端传输

//asBufferedImage() 返回BufferedImage  
BufferedImage thumbnail = Thumbnails.of("images/a380_1280x1024.jpg")   .size(1280, 1024)  .toOutputStream(response.getOutputStream());  

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com