C# gif动画生成处理

lakeq 2010-03-23 06:59:55
如题: C# gif动画生成处理 ?

具体代码段:



System.Drawing.Image _bgimg = System.Drawing.Image.FromFile("E:\\bg.gif");
//bg.gif 为一张带有动画的动态图片

System.Drawing.Graphics _g = System.Drawing.Graphics.FromImage();

_bgimg.save("E:\\new_bg.gif");
//new_bg.gif 为画出的新的图片(注:不带动画效果)



请问:怎样才能生成一张与原图gif效果完全一样的图片 ?


上百度或Google搜索的结果是:

涉及到动画帧的概念,要对gif图拆帧 再怎样?否则,只能获取到第一帧的效果(静图)。

关键问题:请前辈或高手(会这个技术的朋友)能否讲解或提供对gif动画帧处理的代码段[code:c#]?

尽量完整一点啦,先谢谢了。也想前辈们学习了。


也希望大家,多顶顶不然就会沉下去啦 ,多谢各位朋友了。

...全文
736 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lakeq 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
GIF文件,多个文件组成每个文件为一帧,把所有帧进行组合
http://www.codeproject.com/KB/GDI-plus/NGif.aspx
[/Quote]


/* create Gif */
//you should replace filepath
String [] imageFilePaths = new String[]{"c:\\01.png","c:\\02.png","c:\\03.png"};
String outputFilePath = "c:\\test.gif";
AnimatedGifEncoder e = new AnimatedGifEncoder();
e.Start( outputFilePath );
e.SetDelay(500);
//-1:no repeat,0:always repeat
e.SetRepeat(0);
for (int i = 0, count = imageFilePaths.Length; i < count; i++ )
{
e.AddFrame( Image.FromFile( imageFilePaths[i] ) );
}
e.Finish();
/* extract Gif */
string outputPath = "c:\\";
GifDecoder gifDecoder = new GifDecoder();
gifDecoder.Read( "c:\\test.gif" );
for ( int i = 0, count = gifDecoder.GetFrameCount(); i < count; i++ )
{
Image frame = gifDecoder.GetFrame( i ); // frame i
frame.Save( outputPath + Guid.NewGuid().ToString()
+ ".png", ImageFormat.Png );
}


代码段中的:GifDecoder 是引用的[Jillzhang.GifUtility.dll] ,哦 。。。
sunnj87 2010-03-23
  • 打赏
  • 举报
回复
一般做这样操作的都是需要对生成的图片进行一定的处理吧
如加点什么水印了之类的吧,或者修改下动态图的尺寸了,生成缩略图什么的吧
呵呵,猜的,没搞过。。
这种的是属于GDI编程吗?
感觉要生成一样的直接file copy来的快
帮LZ顶!
wuyq11 2010-03-23
  • 打赏
  • 举报
回复
GIF文件,多个文件组成每个文件为一帧,把所有帧进行组合
http://www.codeproject.com/KB/GDI-plus/NGif.aspx
lakeq 2010-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 foren_whb 的回复:]
lz的别名很高调嘛
[/Quote]
哈哈,是指{★不耻下问☆ } 。。。

继续顶起来哦!
丰云 2010-03-23
  • 打赏
  • 举报
回复
lz的别名很高调嘛
lakeq 2010-03-23
  • 打赏
  • 举报
回复
修正:

System.Drawing.Image _bgimg = System.Drawing.Image.FromFile("E:\\bg.gif");
//bg.gif 为一张带有动画的动态图片

System.Drawing.Graphics _g = System.Drawing.Graphics.FromImage(_bgimg);

_bgimg.save("E:\\new_bg.gif");
//new_bg.gif 为画出的新的图片(注:不带动画效果)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧