作者:jillzhang 来源:博客园   酷勤网收集 2008-04-14

摘要
  在园子中发布了几个Gif处理库的版本,通过邮件的方式的确也比较费力,很多朋友建议我在CodePlex上开源,前期不是我不愿意,只是实在懒得在上面拼凑蹩脚的E文,今天终于腾出一些时间,将Gif动画处理类库在CodePlex上发布了出来

在园子中发布了几个Gif处理库的版本,通过邮件的方式的确也比较费力,很多朋友建议我在CodePlex上开源,前期不是我不愿意,只是实在懒得在上面拼凑蹩脚的E文,今天终于腾出一些时间,将Gif动画处理类库在CodePlex上发布了出来,以后有更新,大家可以到上面去下载,项目地址:

http://www.codeplex.com/GifUtility

我采用的是New BSD License的开源协议,大家也可以对此类库进行扩充和修改.jillzhang在此谢过大家的支持,我也会一直更新和维护该项目.

------------------------------------------------------------------------------------------------------------------------------------
最后更新: 2008-04-02 20:00(第一次更新)
更新内容:
重构了全部代码,原来的代码是急于实现,没有过多考虑代码的优美,这次没有功能上的添加,算法上也没有太大的改变,只是用一种我认为更加合理的方式进行了一下代码重构,同时也感谢园子中好多朋友热情的指点和更正.
更改的地方比较多,不便赘述,有兴趣的同学直接到http://www.codeplex.com/GifUtility 下载就可以了

------------------------------------------------------------------------------------------------------------------------------------
最后更新: 2008-04-11 00:30(第二次更新)
更新内容:
增加Gif旋转和翻转功能,函数为:
 
有兴趣的同学直接到http://www.codeplex.com/GifUtility 下载就可以了
------------------------------------------------------------------------------------------------------
最后更新: 2008-04-13 00:30(第二次更新)
新增功能:
1)对Gif图像和Gif动画进行剪裁的功能
函数原型:

        /// <summary>
        
/// 对Gif图片进行剪裁
        
/// </summary>
        
/// <param name="gifFilePath">原图像</param>
        
/// <param name="rect">剪裁区域</param>
        
/// <param name="outFilePath">输出路径</param>

        public static void Crop(string gifFilePath, Rectangle rect, string outFilePath)
2)修改了测试程序
运行效果:
打开GifUI,显示出现欢迎界面


过后,出现主界面

剪裁后的效果为:

   
 

评论:

#13楼 2008-03-30 13:49 | varptr

很感谢lz的分享,试用了一下,效果很好,提提一些小意见:
1、如果作为一个类库用于其他应用程序,其实只要GifHelper这个类为Public,而其他的类可以省略public这个修饰符,那么在其他程序应用这个组件时,就不会暴露太多内部信息。
2、gifhelper的做水印、缩略等方法做成static方法,似乎会便于调用
3、运算消耗时间较多,我尝试在2.8G的cpu上将300px(约200kb的gif图片)的gif转成100px的缩略图,用了近1.5秒,而反过来却需要3秒,cpu占用近100%。
4、对比Gif_20080224.rar这个版本,新版本的改动较大,能否将0224这个的背景色问题修正之后,另外同时提供这个版本的源代码在codeplex上,这样对于我们的学习很有帮助。

不好意思一下子写了这么多,呵呵,不过真的很感谢lz的分享和深入专研的精神!

#17楼 61.164.37.*
2008-04-01 15:15 | LDPP [未注册用户]

还是有错误
GifDecoder.ReadImage() 下面这句我测试时候报错
graphicEx = graphics[frameCount];

我将它改为
GraphicEx graphicEx =new GraphicEx();
if (graphics.Count > frameCount)
{
graphicEx = graphics[frameCount];
}

        /// <summary>
        
/// 将Gif图片进行旋转或者翻转
        
/// </summary>

        
/// <param name="gifFilePath">原图像路径</param>
        
/// <param name="rotateType">翻转或者旋转方式</param>
        
/// <param name="outputPath">输出路径</param>

        public static void Rotate(string gifFilePath, RotateFlipType rotateType, string outputPath)

效果
原图:

向左旋转

分类: 开源风暴 IT法律 开源代码下载



关于酷勤 | 联系方式 | 免责声明 | 友情链接