java使用google开源工具实现图片压缩

阅读目录

  • 前言
  • 压缩的要求
  • 实现
  • 优点
  • 其他功能

前言

作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情。

现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高清图片,分辨率也是相当的高,当然占用的存储空间也就大了。问题也就产生了,你每个用户都上传个3M的图片怎么办?

但是显然现在硬盘的存放空间是不值钱的,1T、2T随便来,存放是能用钱解决的问题。

但是网速太值钱了,用户如果天天加载你的网页加载个半天,就是因为图片太大导致的那就不是钱能解决的问题了。

因为用户的网络环境你是不可控制的。所以你只能考虑压缩图片的质量从而保证网站打开的速度。

 

压缩的要求

图片压缩,在我的想法里面有下面几个要求。

1、压缩程度可控制,想压缩成多小就多小。

2、压缩之后图片尽可能的不失真。

3、压缩速度要快。

4、代码简单,依赖较少。

 

实现

然后带着这些要求去寻找,找到了Thumbnailator,一个google使用的开源的工具类。

这个工具类满足了上面所说的所有的要求。

同时对于图片的处理还有了别的方法,如旋转,裁切,加水印等等。

在github上面的地址是:https://github.com/coobird/thumbnailator

maven的地址


   net.coobird
   thumbnailator
   0.4.8

使用起来特别的简单:一行代码就搞定了

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

其中的scale是可以指定图片的大小,值在0到1之间,1f就是原图大小,0.5就是原图的一半大小,这里的大小是指图片的长宽。

而outputQuality是图片的质量,值也是在0到1,越接近于1质量越好,越接近于0质量越差。

对于压缩图片来说上面就已经足够了。

 

PS:经过使用后的反馈,这个工具无法正确压缩出png格式的图片

因为png本身就是一种无损的图片格式,而jpg是一种压缩的图片格式;
当前方法目的是为了在尽可能不丢失图片质量的情况下进行的压缩;
建议将图片压缩后的格式设置成jpg来解决;.outputFormat("jpg")
工具源码本身最后还是调用jdk中的ImageIO.createImageOutputStream(fos);来实现的

 

优点

1、简单容易使用。

2、压缩图片效果很好。如下:其中100是原图,50就是0.5f

java使用google开源工具实现图片压缩_第1张图片

3、图片质量不错下面是0.25f和原图的对比

java使用google开源工具实现图片压缩_第2张图片

java使用google开源工具实现图片压缩_第3张图片

上面是压缩过后的,下面是原图、看出来了吗?

 

其他功能

最后附上其他功能使用的简单例子

+ View code

其他的具体方法细节可以自己去查看官方的API或者网络上的其他资源。

 

参考博客:

http://blog.csdn.net/wangpeng047/article/details/17610451

http://blog.csdn.net/qiaqia609/article/details/53171149

http://www.cnblogs.com/miskis/p/5500822.html

 

转载请注明出处:http://www.cnblogs.com/linkstar/p/7412012.html

作者:LinkinStar

你可能感兴趣的:(WEB前端)