Подтвердить что ты не робот

С# Рассказывать статические GIF файлы, кроме анимированных

Я буду держать его коротким и простым;

Есть ли способ показать статические GIF-изображения, кроме анимированных? Я использую С#.

Спасибо

4b9b3361

Ответ 1

Вот статья о том, как определить количество кадров в анимации GIF.

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

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

Ответ 3

Wikipedia содержит некоторую информацию о макете анимированного GIF по сравнению со статическим.

Анимированный GIF файл содержит несколько изображений или кадров, которые будут отображаться последовательно, каждый из которых описывается собственным GCE (расширение графического контроля), которому предшествует заголовок, содержимое которого по умолчанию применяется ко всем кадрам. После заголовка данные ориентированы на поток, а не на фиксированные индексы, поэтому местоположение начала GCE зависит от длины предыдущих GCE (s).