西西软件园多重安全检测下载网站、值得信赖的软件下载站!
西西首页 常用软件 软件下载 安卓软件 游戏下载 安卓游戏 MAC应用 驱动下载 安卓电视
系统工具网络工具媒体工具图形图像聊天工具应用软件编程开发手机软件安卓应用电脑安全字体素材

GIF反转工具

v1.0 绿色版
  • GIF反转工具v1.0 绿色版
  • 软件大小:1M
  • 更新时间:2013-12-19 15:08
  • 软件语言:中文
  • 软件厂商:
  • 软件类别:国产软件 / 免费软件 / 图像处理
  • 软件等级:4级
  • 应用平台:WinAll, Win7
  • 官方网站:暂无
好评:50%
坏评:50%

软件介绍

相关链接 版本说明 下载地址
GIF图像编辑器(Namo GIF) 中文免费版 查看
动态图片制作(UleadGIFAnimator) 中文绿色版 查看
GIF图片制作工具 绿色免费版 查看
GIF图片大小修改器 绿色中文免费版 查看
gif tools 绿色中文免费版 查看
GIF动画制作 官方免费版 查看
GIF分解器 绿色版 查看

首先看下效果图:

然后是两张gif的对比
//原本图是正着走的
//处理后是倒着走的

gif是动态的嘛。然后我昨天和一个朋友聊天的时候发了一串相同的gif图,然后看着千篇一律的东西。我想能不能写个程序实现gif的初始状态不同呢。什么意思呢。我们知道,gif是由帧构成的,我想实现的功能是比如一个gif共有十帧,那么我写出来的程序能够生成10个gif文件,分别对应不同的初始状态来进行循环。后来一想,gif帧太多的话,比较慢,而且也不实用,于是决定简化一下,只做一个反转工具,比如一个gif是从左到右播放的,通过这个成功可以生成一个相同的gif图,不过是倒着播放的。

思路很简单,就是先把gif分解成很多帧,然后对帧进行合并,合并帧之前把帧的位置反转一下就可以了。因为我自己对图像处理的知识不懂,只想到了思路,所以这些功能都要找些资料,然后修改,测试。

分割帧的代码如下

 //解码gif图片
        public List<string> GetFrames(stringpPath,stringpSavedPath)
        {
            Image gif=Image.FromFile(pPath);
            FrameDimension fd=newFrameDimension(gif.FrameDimensionsList[0]); 
            //获取帧数(gif图片可能包含多帧,其它格式图片一般仅一帧)
            intcount=gif.GetFrameCount(fd);
            List<string>gifList=newList<string>();            //以Jpeg格式保存各帧
 
            for(inti=0;i<count;i++)
              {
                  gif.SelectActiveFrame(fd,i);
                  gif.Save(pSavedPath+"\\frame_"+i+".png",ImageFormat.Png);
                  gifList.Add(pSavedPath+"\\frame_"+i+".png");
              }
            returngifList;
         }

可以看到,返回了一个包含所有生成的帧地址的list列表。然后就是使用gifList作为参数来合并了。

//获取系统临时目录存放解码后的png图片\r\n
                stringtemppath=System.Environment.GetEnvironmentVariable("TEMP");
 
                List<string>gifList=GetFrames(tBoxFile.Text,temppath);
                gifList.Reverse();
                StringoutputFilePath="new.gif";
                AnimatedGifEncoder ae=newAnimatedGifEncoder();
                ae.Start(outputFilePath);
                ae.SetDelay(100);    // 延迟间隔\r\n
                ae.SetRepeat(0);  //-1:不循环,0:总是循环 播放  \r\n
                for(inti=0,count=gifList.Count;i<count;i++)
                {
                    ae.AddFrame(Image.FromFile(gifList[i]));
                }
                ae.Finish();
                MessageBox.Show("成功!新文件已保存在同目录");

这里面使用了AnimatedGifEncoder这个类,这是Gif.Components.dll动态连接库里的类(此库开源,文末给出地址),是我在codeProject上找到的。首先我把gifList反转,然后合并保存到同目录。中间生成的帧为了方便我保存到了temp目录。

本来这个库里是分割gif的功能的。但是我实际测试后发现效果非常差,图片黑条泛滥,根本没法看。所以还是使用上面那段代码,相关代码我依然保存在工程里,有兴趣可以自己测试。

软件标签: GIF

软件截图

GIF反转工具 v1.0 绿色版

    其他版本下载

    热门评论

    最新评论

    第 1 楼 黑龙江哈尔滨黑龙江中医药大学 网友 客人 发表于: 2014/7/5 10:22:51
    好工具!!

    支持( 0 ) 盖楼(回复)

    发表评论 查看所有评论(1)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)

    下载帮助下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。

    TOP
    软件下载