首先看下效果图:
然后是两张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的功能的。但是我实际测试后发现效果非常差,图片黑条泛滥,根本没法看。所以还是使用上面那段代码,相关代码我依然保存在工程里,有兴趣可以自己测试。





















大小: 179M
大小: 1.14G
Adobe Photoshop CS5v13.0官方简体中文版
SAI绘画软件v2.6 汉化最新版
Photoshop CS29.0 简体中文正式版
CorelDRAW X7简体中文正式版v25.0.0.17专业版
Adobe Photoshop CS310.0.1 官方中文正式原版
佳能数码单反相机软件(Digital Photo Professional)3.9 中文版
ACDsee9.0中文版
CAD迷你家装2022R1 官方版
光影魔术手20174.4.1.304 官方正式版
彩视相册制作软件v1.0 官方安装版
GIF图像编辑器(Namo GIF)中文免费版
StarUML UML工具5.0.2 汉化绿色版
Adobe Illustrator CC 20152015.2.1 中文精简版
美图秀秀6.3.3.1 去广告绿色版
批量修改图片大小工具Mytoolsoft Image ResizerV2.4 汉化绿色版
Adobe Photoshop CC 2017v18.0.0 官方简体中文版
Adobe Illustrator CS5Ansifa 精简绿色中文版
抠图工具(Picture Cutout Guide)V3.2.9 中文破解版
好工具!!