2010-05-17 4 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

+0

@ amelvin : 좋습니다. 나는 jeff가 이미 그것을했음을 본다. =) @jeff atwood : 변수 이름을 규칙으로 바꾸는 소품! –

+2

여기에 코드를 추가해 주셔서 감사합니다. 더 이상 웹 사이트를 사용할 수 없습니다. – flayn

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 
    } 
} 
관련 문제