Почему .gif изображение показывает только некоторые первые кадры (Windows Phone) - PullRequest
1 голос
/ 12 марта 2012

мой предыдущий вопрос с исходным кодом находится здесь: Как использовать GIF-анимированное изображение в WP 7

Я использую http://imagetools.codeplex.com/ в моем анимированном GIF-файле У меня 24 кадра, но он декодирует только некоторые первые кадры, поэтому я снова и снова вижу анимацию повторения некоторых (может быть, двух) кадров

1 Ответ

1 голос
/ 14 марта 2012

Для некоторых gif-файлов этот декодер работает, для других - нет.

Я скачал исходный код этого проекта и нашел код, который работает неправильно. Он находится в файле ImageTools.IO.Gif\GifDecoder.cs, метод Decode:

int nextFlag = stream.ReadByte();
while (nextFlag != 0)
{
    //...
}

Но этот gif содержит 0 байт прямо посередине, так что декодер останавливается там, где он не должен. Решение состоит в том, чтобы изменить этот флаг на -1, чтобы мы были уверены, что изображение gif будет прочитано до конца:

int nextFlag = stream.ReadByte();
while (nextFlag != -1)
{
}

Так что вам нужно либо перекомпилировать эту библиотеку, либо включить проект ImageTools.IO.Gif в виде исходного кода, а не в виде DLL.

Вы можете скачать образец проекта здесь: http://dl.dropbox.com/u/8047386/StackOverflow/TestGif.zip

Но я не уверен, что можно положиться на это исправление. В любом случае я открыл вопрос по codeplex .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...