jillzhang

专注才能专业

随笔- 241  文章- 0  评论- 4330 
博客园  首页  新随笔  联系  管理  订阅 订阅

再次改进gif动画水印和缩略-节日版

连续发表了几篇有关gif动画处理的文章,地址如下:
给gif动画添加水印的初步实现
改善了性能的gif动画添加水印
为gif动画添加水印-有具体实现[2008-02-15日更新]
生成Gif动画缩略图-Gif动画水印的改进
再发Gif动画水印

前面虽然解决了很多问题,但同时也都留下了许多有待解决的难题,本文于200年3月7日修正了以往文章中的如下问题:
1)修正了2007年3月5日发布的
再发Gif动画水印中水印文字的颜色问题,在上个版本中,虽然也是根据调色板中的颜色来设置文字前景色的,可DrawString()之后,其实在对颜色编制索引的时候,颜色还是会有变化,这种变化会导致水印字的部分在调色板中找不到索引,所以字的颜色就很难得以控制,本文通过颜色近似比较,将水印后的图片中颜色均量化到调色板可表示的颜色范围之内,从此解决了水印字体颜色的问题。新的水印函数为:
 /**//// <summary>
        
/// 对gif动画添加水印
        
/// </summary>

        
/// <param name="gifFilePath">原gif动画的路径</param>
        
/// <param name="text">水印文字</param>
        
/// <param name="textForceColor">水印文字的颜色,因为gif不是真彩色图片,所以在显示的时候,该颜色可能有所误差,但基本上可以确定颜色范围</param>
        
/// <param name="font">字体</param>
        
/// <param name="x">水印位置横坐标</param>
        
/// <param name="y">水印位置纵坐标</param>
        
/// <param name="outputPath">输出路径</param>

        public void WaterMark(string gifFilePath, string text, Color textForceColor, Font font, float x, float y, string outputPath)
原图:水印后效果:

在
生成Gif动画缩略图-Gif动画水印的改进中一文中有对gif动画进行缩略的一个实现,那个实现主要是用codeproject上提供的NGif来完成的,不过它基于的是将对现有图片的颜色量化,非常容易出现背景变色,体积增大等问题,本文用一种新的思路取代了那种做法,我的想法是:我目前暂不针对给定几张png图片,让我生成gif动画这种的应用场景,我主要针对的是给我一张现在存在的gif动画,我能够对其水印,缩略。要实现这样的目的,我的基本思路就是保持该动画的调色板信息不变,编码的时候,整体布局也保持基本不变,变得只是我的需求影响到的部分。一幅图,如果经过缩略,它的有些像素是会发生改变的,这就使得很难再次利用调色板,我根据颜色抖动,将缩略中的颜色重新量化成调色板能表示,所以图片实质上会发生一些失真。但基本上视觉没有太大影响,可由此带来的好处就大大超过了害处,经过缩略的gif动画背景色不会更改,体积会成倍成倍的减小。缩略方法为:
  /**//// <summary>
        
/// 获取gif动画的缩略图
        
/// </summary>
        
/// <param name="gifFilePath">原gif图片路径</param>
        
/// <param name="rate">缩放大小</param>
        
/// <param name="outputPath">缩略图大小</param>

        public void GetThumbnail(string gifFilePath, double rate, string outputPath)

原图:缩略后效果:

原图大小: 17.3KB ,缩略后大小:6.54KB

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

今天是老婆的双重节日:生日和妇女节,祝愿老婆开开心心,越来越漂亮

一起的日子


同时祝园子中的女同胞节日快乐,:)
作者:jillzhang
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Tag标签: Gif动画
posted @ 2008-03-08 00:21 jillzhang 阅读(3179) 评论(120)  编辑 收藏 所属分类: asp.net
发表评论
  回复  引用  查看    
2008-03-08 00:24 | ArthurHend      
我第一个来顶你兄弟~
  回复  引用  查看    
2008-03-08 00:26 | jillzhang      
@ArthurHend
多谢支持
  回复  引用  查看    
2008-03-08 00:33 | ArthurHend      
我一直在注视着你呢!o(∩_∩)o...
  回复  引用    
2008-03-08 00:49 | wise_sandy [未注册用户]
支持~
  回复  引用    
2008-03-08 01:17 | imf [未注册用户]
兄弟。。。一直在观望你呢。。。
  回复  引用  查看    
2008-03-08 01:26 | winzheng      
向楼主学习
  回复  引用  查看    
2008-03-08 02:13 | lele_wangman      
祝福LZ!
同时也祝福我和我女友节日快乐,哈哈
  回复  引用    
2008-03-08 02:53 | 学习了 [未注册用户]
象牛人学习
  回复  引用  查看    
2008-03-08 08:20 | jillzhang      
@wise_sandy
@imf
@winzheng
@lele_wangman
@学习了
多谢你们的支持
  回复  引用  查看    
2008-03-08 08:50 | 韩现龙      
顶一个!
  回复  引用    
2008-03-08 09:03 | 顶起来 [未注册用户]
顶一个。。
  回复  引用    
2008-03-08 09:16 | 善良无用 [未注册用户]
很强很好用,感谢
  回复  引用    
2008-03-08 09:18 | 善良无用 [未注册用户]
忘记说了,每次修改了,都发我一份到偶信箱吧,可以不? zhq7857#tom.com
  回复  引用    
2008-03-08 09:19 | vainnetwork1 [未注册用户]
很强很好用,很感谢.哈哈
  回复  引用  查看    
2008-03-08 09:21 | 农民写代码      
顶一个。。

程序就是需要这种研究精神。
  回复  引用  查看    
2008-03-08 09:23 | jillzhang      
@善良无用
抱歉,只发给博客园注册用户,如果你是,发我邮件,并注明博客网址。
  回复  引用  查看    
2008-03-08 09:24 | jillzhang      
@农民写代码
多谢支持
  回复  引用  查看    
2008-03-08 09:25 | gqzhao      
麻烦楼主给我发一个,谢谢。
  回复  引用  查看    
2008-03-08 09:39 | Jeffery Huang      
感谢楼主的无私奉献,祝福您和您的老婆
我已经给您发了邮件,劳驾给我发送一份,再次感谢!
  回复  引用  查看    
2008-03-08 09:42 | jillzhang      
@gqzhao
@Jeffery Huang
已发
  回复  引用  查看    
2008-03-08 09:50 | Jeffery Huang      
@jillzhang
再次感谢
  回复  引用  查看    
2008-03-08 10:00 | 伍迷      
祝你老婆生日节日和我那孩子他妈节日快乐:)
  回复  引用  查看    
2008-03-08 10:07 | jillzhang      
@伍迷
:)
  回复  引用    
2008-03-08 10:47 | 毕业论文veyrlunwen.cn [未注册用户]
支持~
  回复  引用    
2008-03-08 11:09 | imf [未注册用户]
俺已收到源碼。。謝謝。。。
  回复  引用  查看    
2008-03-08 11:21 | 海浪空间      
向楼主学习
  回复  引用    
2008-03-08 11:25 | tmxkhd666 [未注册用户]
向你学习了.
正在学习中.
楼主发我一份.
谢谢.

  回复  引用  查看    
2008-03-08 11:30 | 朱少平      
:-),一直在看楼主的博客,学习中,不知道可否给我发一份,谢谢楼主啦!
  回复  引用    
2008-03-08 11:41 | view [未注册用户]
发我一份!
  回复  引用  查看    
2008-03-08 12:03 | 朱少平      
:-),代码已经收到,学习中,谢谢楼主啦
  回复  引用  查看    
2008-03-08 12:03 | ArthurHend      
jillzhang的代码写得真好,注释很详细!
  回复  引用  查看    
2008-03-08 12:04 | 怪虎      
给我一份,谢谢..
oocn@163.com
  回复  引用  查看    
2008-03-08 12:28 | 秋千      
震撼
楼主给我发一份
duml789@163.com
  回复  引用  查看    
2008-03-08 12:38 | Mercury      
xpl-by@163.com
麻烦楼主也发一份给我学习学习,谢谢!
  回复  引用  查看    
2008-03-08 12:59 | jillzhang      
@ArthurHend
多谢夸奖
@怪虎
@秋千
@Mercury
已发送
  回复  引用  查看    
2008-03-08 13:53 | wingoo      
yiminggw@163.com
多谢啦:)
  回复  引用  查看    
2008-03-08 13:54 | 间间单单      
偶是 善良无用 ,发我一份吧,呵呵,感谢
zhq7857@tom.com
  回复  引用  查看    
2008-03-08 14:14 | 盛天^-^      
tangzehuan@126.com
确实不错,谢了
  回复  引用  查看    
2008-03-08 14:58 | Jeffery Huang      
楼主你好,我试了一下生成缩略图,生成后的效果和缩小的比例有关,有的比例生成后gif的动画效果是完整的,有的比例生成以后,gif就出现掉帧的现象,造成动画不完整

注:我是用MemoryStream保存的重新编码以后的结果,不是用的FileStream
  回复  引用  查看    
2008-03-08 15:13 | 天一生水      
给我也发一个吧,学习...
taotao185@163.com
  回复  引用  查看    
2008-03-08 15:54 | jillzhang      
@Jeffery Huang
实际上没有掉,用ie打开就可以显示了。
  回复  引用  查看    
2008-03-08 15:57 | Vincent Jiang‎      
Jiangww_0924@163.com,学习下,谢谢~
  回复  引用  查看    
2008-03-08 16:01 | jillzhang      
@Vincent Jiang‎
@天一生水
@盛天^-^
@wingoo
已发送
  回复  引用  查看    
2008-03-08 17:45 | 李华星      
不错,支持
  回复  引用  查看    
2008-03-08 17:52 | ongbin      
支持~!很好用
也给我份吧,ongbin@gmail.com
  回复  引用  查看    
2008-03-08 18:23 | 亦续缘      
你好,能否也给我发一份,谢谢!chenzhitong@qq.com
  回复  引用  查看    
2008-03-08 18:39 | jillzhang      
@ongbin
@亦续缘
已发
  回复  引用    
2008-03-08 19:04 | 李寻欢 [未注册用户]
兄弟,这个加水印的代码给我发一个吧。

Email:tangdebing1127@126.com

博客园ID:http://www.cnblogs.com/tangdebing

  回复  引用  查看    
2008-03-08 19:43 | hoodlum1980      
用Adobe ImageReady 打开.gif文件,然后直接往上面打上文字就行了。然后将优化结果存储为即可。
  回复  引用  查看    
2008-03-08 20:08 | jillzhang      
@hoodlum1980
你说了一个绝对真理
  回复  引用  查看    
2008-03-08 20:33 | 亦续缘      
已经收到文件,再次感谢!
  回复  引用  查看    
2008-03-08 20:42 | SPARON      
请发一份给我谢谢!!!
zhaokeyong@126.com
  回复  引用    
2008-03-08 20:49 | 510282092 [未注册用户]
真佩服,本人一向不怎么在网上发文章,不过兄弟你挺牛的
  回复  引用  查看    
2008-03-08 20:52 | jillzhang      
@SPARON
已发送
@510282092
多谢支持
  回复  引用    
2008-03-08 21:39 | iT tang [未注册用户]
兄弟,这个加水印的代码给我发一个吧。

Email:ittang@yahoo.cn
  回复  引用  查看    
2008-03-08 21:52 | 老蒋      
支持一下。。
  回复  引用  查看    
2008-03-08 23:02 | Superstone      
superstone3@hotmail.com
我也要,学习一下。
  回复  引用  查看    
2008-03-08 23:26 | airwolf2026      
嘿嘿,今天去玩了...现在送上祝福哈.等俺开始研究的时候,在向楼主要代码.(*^__^*) 嘻嘻……
  回复  引用  查看    
2008-03-09 00:53 | Junstyle      
给我发一份吧,谢谢!
  回复  引用  查看    
2008-03-09 07:38 | jillzhang      
@iT tang
@Superstone
@Junstyle
已发


@airwolf2026
@老蒋
多谢支持
  回复  引用  查看    
2008-03-09 08:01 | 蓝色代码yiyuan      
你好,能发份参考下吗 谢谢:)
niyanyang2007@163.com
  回复  引用    
2008-03-09 10:38 | fit [未注册用户]
不错,顶一个
  回复  引用  查看    
2008-03-09 10:56 | Jeffery Huang      
@jillzhang
我是用IE打开的,不同比例生成的图片,效果不一样,有的后面调几帧,有的正常
  回复  引用    
2008-03-09 10:56 | sammyshao [未注册用户]
我也要一份.谢谢
  回复  引用  查看    
2008-03-09 11:02 | Jeffery Huang      



  回复  引用    
2008-03-09 11:04 | imf [未注册用户]
jillzhang兄,我的web项目跑在IDC提供的虚拟空间上,可是他们的服务器上没有装上别的字体,可是我又想用别的字体,这个有什么办法能解决吗?
  回复  引用  查看    
2008-03-09 11:16 | jillzhang      
@imf
那估计不行了,水印字体要服务器支持
  回复  引用  查看    
2008-03-09 11:17 | jillzhang      
@Jeffery Huang
我在检查。
  回复  引用  查看    
2008-03-09 11:24 | Edwin Liu      
支持一下, 谢谢分享
edwin6#tom.com
  回复  引用  查看    
2008-03-09 12:15 | jillzhang      
@Edwin Liu
已发送
  回复  引用  查看    
2008-03-09 15:50 | 老钱      
很好,很支持,
  回复  引用  查看    
2008-03-09 21:14 | Such Cloud      
能发份给我吗? 谢谢!!
liuyun_2006@qq.com
  回复  引用  查看    
2008-03-09 21:31 | jillzhang      
@老钱
多谢支持

@Such Cloud
已发
  回复  引用  查看    
2008-03-10 07:58 | 露雨城市.NET2.0和Sql Server 2005开发研究      
给我一封源码吧,谢谢楼主啦.
magizer#126.com
  回复  引用    
2008-03-10 08:32 | you_xia [未注册用户]
thank you
bearyqb@163.com
  回复  引用  查看    
2008-03-10 10:11 | 平静中的疯狂      
一直在找这个,终于找到了,感谢LZ的辛勤劳动
烦您给我一份源码,不甚感谢
zrc000#gmail.com
  回复  引用  查看    
2008-03-10 10:17 | Howard Queen      
“声讨盗用行为,加强版权教育!”
知识分子再没点良心,我们国家就完了:)!
支持楼主!
  回复  引用  查看    
2008-03-10 10:33 | jillzhang      
@Howard Queen
你吓死我了,以为来这里声讨我来了呢,:)多谢支持
晚上回家发
  回复  引用    
2008-03-10 13:52 | hehestudy [未注册用户]
给我来一份吧,谢谢了
邮箱:hehestudy@gmail.com
  回复  引用    
2008-03-10 15:08 | 杨瑞 [未注册用户]
楼主给我发一份吧,谢谢了
邮箱: ybl_1987@126.com
  回复  引用  查看    
2008-03-10 16:45 | jillzhang      
@杨瑞
晚上回家一并发
现在还有些bug,正在改,可能还需要1-2次改动,请关注
  回复  引用  查看    
2008-03-10 20:17 | jillzhang      
@杨瑞
@Howard Queen
@平静中的疯狂
已发
  回复  引用  查看    
2008-03-10 22:58 | jillzhang      
经过我的测试,我发现目前的LZW压缩算法在某个地方肯定存在问题,导致缩略的时候会发生丢帧。但现在我还没找出具体出在哪。
  回复  引用  查看    
2008-03-11 07:38 | Jeffery Huang      
@jillzhang
我也不太明白,我大致看了一下代码,缩略的时候是把每一帧先解码出来,分别缩略了以后再编码,解码应该不会有什么问题,难道是重新编码有问题?
  回复  引用  查看    
2008-03-12 14:33 | jillzhang      
@Jeffery Huang
经过我几天的努力,终于发现了问题所在。
的确是LZW压缩算法的问题,想偷点懒借用NGif上的LZWEncoder,没想到它靠不住,没办法自己重新写了一个,我测试了一下,没有出现问题,晚上回家放出纠正掉帧问题的版本。
  回复  引用  查看    
2008-03-12 14:36 | Jeffery Huang      
@jillzhang
你的敬业和钻研精神太让我佩服了,呵呵,你做了一件伟大的事情
  回复  引用  查看    
2008-03-12 14:37 | jillzhang      
@Jeffery Huang
呵呵,多谢支持了
  回复  引用  查看    
2008-03-12 14:44 | jillzhang      
@Jeffery Huang
刚才msn可能点错了,没加上
  回复  引用  查看    
2008-03-12 14:46 | Jeffery Huang      
@jillzhang
?