C# 区分静态 GIF 和动画

Posted

技术标签:

【中文标题】C# 区分静态 GIF 和动画【英文标题】:C# Tell static GIFs apart from animated ones 【发布时间】:2011-02-20 09:05:22 【问题描述】:

我会保持简短;

有什么方法可以区分静态 GIF 图像和动画图像吗?我正在使用 C#。

谢谢

【问题讨论】:

【参考方案1】:

Here's an article about how to determine the number of frames in a GIF animation.

Image i = Image.FromFile(Server.MapPath("AnimatedGIF.gif"));

Imaging.FrameDimension FrameDimensions = 
    new Imaging.FrameDimension(i.FrameDimensionsList[0]);

int frames = i.GetFrameCount(FrameDimensions);

if (frames > 1) 
    Response.Write("Image is an animated GIF with " + frames + " frames");
else 
    Response.Write("Image is not an animated GIF.");

我假设您可以将其与 1 进行比较。

【讨论】:

+1 小字体的硬核文章!您能否在此处粘贴代码的 sn-p 并链接到该文章?这样,如果页面或网站被删除,答案不会丢失。 @amelvin:好主意。我看到 jeff 已经做到了,现在 =) @jeff atwood:将变量名更改为约定的道具! 感谢您在此处添加代码,该网站不再可用。 如果您的目标是检测动画,那么从死像素回答是更简洁的方法。【参考方案2】:

System.Drawing.ImageAnimator.CanAnimate 从 .NET 1.1 开始可用。

来自MSDN:

返回一个布尔值,指示指定图像是否包含基于时间的帧。

例子:

using (Image image = Image.FromFile("somefile.gif"))

    if (ImageAnimator.CanAnimate(image))
    
        // GIF is animated
    
    else
    
        // GIF is not animated
    

【讨论】:

以上是关于C# 区分静态 GIF 和动画的主要内容,如果未能解决你的问题,请参考以下文章

Imagemagick:如何减小具有大静态区域的动画 GIF 的大小?

你如何在 Windows 窗体上显示动画 GIF (c#)

带有动画 GIF 的 C# PictureBox 跳过帧

C# WPF 将动画 gif 设置为背景

保存带有动画 gif 的图像

制作GIF动画