再再发Gif动画处理类库 - 315版

不废话,新增了多个gif图片合并功能,改善了单色算法
合成效果:
原图: 
 
图片太多,截图如上

合并后效果:


下面三个动画

合并后的效果


注意,您合并的图像最好大小一致,我没有找到完全一样的图像,所以费了很大的周折,写js的时候,都知道ie这家伙适应能力强,随便写个函数就可以支持,可这次IE却拖了后腿,我的原图像大小不一致,开始我没找到最大高度和最大长度,就一个个合成了,在windows中浏览没有任何问题,可以在IE中就无法动画了,在firefox中却可以,费了好长时间才找到是大小的原因。后来加了一个
        Size FindMaxSize(List<string> sources)
        
{
            List
<int> widths = new List<int>();
            List
<int> heights = new List<int>();
            
foreach (string s in sources)
            
{
                Bitmap bmp 
= new Bitmap(s);
                widths.Add(bmp.Width);
                heights.Add(bmp.Height);
                bmp.Dispose();
            }

            widths.Sort();
            heights.Sort();
            
return new Size(widths[widths.Count - 1], heights[heights.Count - 1]);
        }
才解决问题

合并的方法为:
       /// <summary>
       
/// 合并多个gif文件
       
/// </summary>

       
/// <param name="sourceGifs">原图像路径集合</param>
       
/// <param name="outGif">合并后图像路径</param>
       
/// <param name="delay">间隔时间</param>
       
/// <param name="repeat">是否重复播放</param> 

        public void Merge(List<string> sourceGifs, string outGif, short delay,bool repeat)

另外,单色算法有所改变,先的单色效果为:
原图:

单色后:


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

声明:代码公开,但使用的时候,请保留作者信息和版权声明,这样我才会有动力继续完善,谢谢配合
posted @ 2008-03-14 23:46  Robin Zhang  阅读(5984)  评论(124编辑  收藏  举报