欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gif图片压缩(纯java实现,不依赖第三方类库) 博客分类: Webgif其他 WebImageGif4j图片压缩gif 

程序员文章站 2024-02-23 12:59:34
...

 

 

    笔者之前一直是在做电子商务系统的架构工作,其中也涉及到一些通用工具类的开发。

    其中有一个工具,笔者认为很重要确又一直没有实现的,就是图片压缩;当然,图片压缩并没有什么难度,因为现成的开源的图片压缩工具非常多,纯java实现的也不少,如比较出名的图片压缩工具为:http://code.google.com/p/java-image-scaling/

 

    但是,在众多的图片压缩工具中,免费且开源的对gif图片压缩的工具则少之又少,也可以基本上说是没有;只有gif4j最为出名,但是是闭源的而且代码经过了混淆,反编译获取的源代码也不理想,所以笔者就想自己写一套通用的gif4j这样的工具类。其实笔者在国内最大的电子商务公司的时候,有一个同事已经写了一套,虽然性能不如:http://code.google.com/p/java-image-scaling/ ,但是效果还是可以的,只是在处理gif的时候可能会有些不完美,且类库太大并依赖于第三方类库。其实笔者认为这哥们写的挺强了,只是依赖的类库让笔者不是很喜欢而已,绝对是大拿的作品;但是因为某些原因,并没有开源,所以笔者想更想写这样的一个工具类。

 

    笔者的这个工具类基本完全没有任何的原创,只是在开源代码的基础上改了一点点而且并加以引用,不是自己写的;请大家不要误会,笔者在处理图片上没有什么经验的。:)

 

好了,说了这么多,我们还是先看一下工具类的压缩效果吧(压缩比例为:50%):

1. 原图:

gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 

1.1 压缩图

gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 

 

说明:上面这张压缩图其实是一种非常简单的压缩,因为里面的每帧图片没有涉及到背景为透明的图,下面来一张背景为透明的动态图吧,其实网上也就是这个一直没有好的解决方案。

 

2. 原图:

 

gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 

2.1 压缩图

gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 

 

说明:上图是背景色为透明的动态图,大家可以看出,压缩之后的效果还是非常理想的,呵呵。

 

// ---------------------------------------------------------------------------------------------------------------

 

但是,是不是所有的图都压缩的非常完美呢,当然不是,那先让我们看如下图片:

 

原图:

gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 

等比例压缩图(即压缩后大小不变):

gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 

说明: 1. 上面的两张图片中,如果大家仔细看会发现棒子的颜色有点不同,可能是处理类的问题(因为笔者对处理图片也没有什么经验,所以也不知道怎么改,不过一般看不出来,压了很多张图片做测试,就这张笔者看出来有些不同)。2. 大小不同,经过等比例压缩(相当于啥也没有同样生成一遍而已),图片反而变大了;所以大家在等比压缩的时候也要记得判断下大小,是否等比这样的压缩是否要进行压缩,压缩结果是否保留也是同样重要的(当然,笔者也处理不了这样的情况)。

 

笔者因为对图片处理没有什么经验,只能提供到如何程度的工具类了;不过对笔者自己来说已经足够了,大家说不是吗?:)

 

附件中有源代码,但是并没有抽象为好用的工具类,也没有提取任何公共函数;只是用main函数跑了一下,做成通用的工具类已经非常简单了,因为时间的关系,笔都就不做这样的工作了。

希望此工具类能给大家带来一些帮助,由其喜欢纯java解决方案的用户来说。

  • gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 
  • 大小: 685.7 KB
  • gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 
  • 大小: 270.5 KB
  • gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 
  • 大小: 115.8 KB
  • gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 
  • 大小: 37.1 KB
  • gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 
  • 大小: 19.7 KB
  • gif图片压缩(纯java实现,不依赖第三方类库)
            
    
    博客分类: Webgif其他 WebImageGif4j图片压缩gif 
  • 大小: 32.3 KB
  • gif.rar (499.4 KB)
  • 下载次数: 1497