2010-05-17 17 views

cevap

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."); 

Ve seni 1.

+2

minik yazı 1 Hardcore makale! Kodun bir parçasını buraya yapıştırıp makaleye de bağlantı verebilir misiniz? Böylece sayfa veya site silinirse, cevap kaybolmaz. – amelvin

+0

@amelvin: iyi fikir. jeff zaten yaptı, şimdi =) @jeff atwood: değişken isimleri kongre değiştirmek için sahne! –

+2

Kodu eklediğiniz için teşekkürler, web sitesi artık mevcut değil. – flayn

1

Wikipedia ile statik birine göre animasyonlu GIF düzeniyle ilgili bazı bilgilere sahip olduğunu karşılaştırmak sadece olabilir varsayalım.

animasyonlu GIF dosya görüntü veya kare bir dizi her kimin içerik varsayılan olarak tüm kareleri için geçerli bir başlık öncesinde kendi GCE (Grafik Kontrol Uzantısı), tarafından açıklanan, arka arkaya görüntülenecek içermektedir. Başlıktan sonra veriler sabit endeksler yerine akış yönelimli olduğundan, GCE'nin başlangıcının konumu önceki GCE (ler) 'in uzunluğuna bağlıdır.

5

System.Drawing.ImageAnimator.CanAnimate .NET 1.1 beri mevcuttur. MSDN kaynaktan

:

belirtilen görüntü zamana dayalı çerçeveler içerip içermediğini gösteren bir Boolean değeri verir.

Örnek:

using (Image image = Image.FromFile("somefile.gif")) 
{ 
    if (ImageAnimator.CanAnimate(image)) 
    { 
     // GIF is animated 
    } 
    else 
    { 
     // GIF is not animated 
    } 
} 
İlgili konular