2010-05-17 64 views

回答

26

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

+2

+1性交文章中一個很小的字體!你能在這裏粘貼一段代碼並鏈接到文章嗎?因此,如果頁面或網站被刪除,答案不會丟失。 – amelvin 2010-05-17 11:57:33

+0

@amelvin:好主意。我看到傑夫已經做到了,現在=) @jeff atwood:將變量名稱改爲慣例的道具! – 2010-05-17 12:43:57

+2

感謝您在此處添加代碼,網站不再可用。 – flayn 2012-06-05 10:09:42

1

Wikipedia有比較靜態的GIF動畫的佈局的一些信息。

的動畫GIF文件包括要被連續顯示的多個圖像或幀,每個通過其自身的GCE(圖形控制擴展),由報頭,其內容通過默認適用於所有的幀之前所描述。在標題之後,數據是面向流的,而不是固定的索引,所以GCE開始的位置取決於先前GCE的長度。

5

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 
    } 
}