为gif动画添加水印-有具体实现[2008-02-15日更新]
更新:有了改善了性能的具体实现。速度提升几百倍
更新:早晨的版本在计算格帧之间时间延迟上有错误,现更正,纠正了动画变快或者变慢的问题
2007年,曾发过两篇解决为gif动画添加水印的文章,分别为:
给gif动画添加水印的初步实现
改善了性能的gif动画添加水印
当时,没有将完整的实现放上来,过去的一年中,陆陆续续的接到好多朋友的邮件,希望能发一份完整的实现,但由于移动硬盘毁坏,原来的代码已经找不到了,一直没能给大家一个很好的回复,深表歉意,现在将完整的程序重新实现了一遍,速度比较慢的,但思路基本有了,希望能给大家一个交待。
原图片:
水印后:
比去年版本的改进:
1)解决了各帧之间间隔变快的问题
未解决的问题
1)效率问题(2008-02-15已有更新,有了改善性能后的具体实现,速度提升几百倍)
2)透明背景的处理
项目文件:/Files/jillzhang/Gif.rar
改善性能后的具体实现:/Files/jillzhang/Gif_Faster.rar
更新:早晨的版本在计算格帧之间时间延迟上有错误,现更正,纠正了动画变快或者变慢的问题
纠正后版本:/Files/jillzhang/Gif_Faster_LastEdited.rar (最新 2008-02-15 17:49)
原来错误的将
int delay = ora_Img.GetPropertyItem(20736).Value[i]
其实ora_Img.GetPropertyItem(20736).Value获得的是1个byte[],这个数组中每四位代表1个delay值。
现已经更正为 int delay = BitConverter.ToInt32(buffer, i * 4);
作者:jillzhang
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。