再发Gif动画水印

功夫不负有心人,前面的几篇文章中分表了水印gif动画的效果,可以往的实现存在着一些问题,比如有些动画在水印后背景颜色发生变化,这归咎于gif不是真彩色图像,它的颜色是量化过了的,而量化过程中,因为参数的变化,很可能造成背景色的更改,GIF的调色板中的颜色是根据图像量化出来的,量化的过程中,存在着近似值的问题,这样就造成颜色的不准确。不过经过我几天来的研究,我将gif图片用我写的解码器解码出来,然后根据解码出来的数据值来设置编码器,这样就解决了上面提到的问题,从而实现了快速,无损,完整地gif动画水印。先看一下测试效果:

 原图1

水印后的图片一


原图二:


水印后的图片二:


本版本也不是没有问题,问题还是有的,比如编码的时候没有考虑处置方法为3的情况和交织存储,但目前我还没遇到这样的图片,可以说95%的图片是可以使用我的组件的 。目前剩余的问题包括:

  1. 特殊图片的处理 :如处置方法为3的,存储方式为交织的
  2. 水印后,图像大小变化比较大

对于第一个问题,我在以后肯定会加以解决,对于第二个问题,限于gif图片的文件格式,它的有些桢和背景图片不是一样大小的,而是采用根据处置方法,横坐标,纵坐标,图像长度,图像高度来控制显示的,而如果我们要实现水印,必须将水印的每帧图像都做成一样大的,这样无形中增加了图像大小,因为对于有些动画图片来说,水印后图片变大是 必然的,但这也不是完全没办法缓解,通过它的处置方法是可以找到规律的,我以后会尽量的使其减小体积,但增大的趋势是肯定的了。
下面的压缩包的文件可能能说明为何水印后体积会变大:
/Files/jillzhang/gif-decode-encode.rar

发现有些人将代码拷贝过去之后,马上将版权改成自己的名字,而且在网上肆意张贴,以后的版本不会直接提供文件下载,如果有需要朋友,只要是园子的注册用户,发邮件给我,我保准回复。这样也许可以为园子增加一些注册用户吧,我的email:jillzhang@126.com,再次声明,园子中兄弟有需要的,发邮件给我就可以了,由此带来的不便,还请兄弟们能理解。邮件中最好注明博客园ID和网址

posted @ 2008-03-05 17:57  Robin Zhang  阅读(6307)  评论(46编辑  收藏  举报