笔者之前一直是在做电子商务系统的架构工作,其中也涉及到一些通用工具类的开发。
其中有一个工具,笔者认为很重要确又一直没有实现的,就是图片压缩;当然,图片压缩并没有什么难度,因为现成的开源的图片压缩工具非常多,纯java实现的也不少,如比较出名的图片压缩工具为:http://code.google.com/p/java-image-scaling/
但是,在众多的图片压缩工具中,免费且开源的对gif图片压缩的工具则少之又少,也可以基本上说是没有;只有gif4j最为出名,但是是闭源的而且代码经过了混淆,反编译获取的源代码也不理想,所以笔者就想自己写一套通用的gif4j这样的工具类。其实笔者在国内最大的电子商务公司的时候,有一个同事已经写了一套,虽然性能不如:http://code.google.com/p/java-image-scaling/ ,但是效果还是可以的,只是在处理gif的时候可能会有些不完美,且类库太大并依赖于第三方类库。其实笔者认为这哥们写的挺强了,只是依赖的类库让笔者不是很喜欢而已,绝对是大拿的作品;但是因为某些原因,并没有开源,所以笔者想更想写这样的一个工具类。
笔者的这个工具类基本完全没有任何的原创,只是在开源代码的基础上改了一点点而且并加以引用,不是自己写的;请大家不要误会,笔者在处理图片上没有什么经验的。:)
好了,说了这么多,我们还是先看一下工具类的压缩效果吧(压缩比例为:50%):
1. 原图:
1.1 压缩图
说明:上面这张压缩图其实是一种非常简单的压缩,因为里面的每帧图片没有涉及到背景为透明的图,下面来一张背景为透明的动态图吧,其实网上也就是这个一直没有好的解决方案。
2. 原图:
2.1 压缩图
说明:上图是背景色为透明的动态图,大家可以看出,压缩之后的效果还是非常理想的,呵呵。
// ---------------------------------------------------------------------------------------------------------------
但是,是不是所有的图都压缩的非常完美呢,当然不是,那先让我们看如下图片:
原图:
等比例压缩图(即压缩后大小不变):
说明: 1. 上面的两张图片中,如果大家仔细看会发现棒子的颜色有点不同,可能是处理类的问题(因为笔者对处理图片也没有什么经验,所以也不知道怎么改,不过一般看不出来,压了很多张图片做测试,就这张笔者看出来有些不同)。2. 大小不同,经过等比例压缩(相当于啥也没有同样生成一遍而已),图片反而变大了;所以大家在等比压缩的时候也要记得判断下大小,是否等比这样的压缩是否要进行压缩,压缩结果是否保留也是同样重要的(当然,笔者也处理不了这样的情况)。
笔者因为对图片处理没有什么经验,只能提供到如何程度的工具类了;不过对笔者自己来说已经足够了,大家说不是吗?:)
附件中有源代码,但是并没有抽象为好用的工具类,也没有提取任何公共函数;只是用main函数跑了一下,做成通用的工具类已经非常简单了,因为时间的关系,笔都就不做这样的工作了。
希望此工具类能给大家带来一些帮助,由其喜欢纯java解决方案的用户来说。
相关推荐
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
� 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...