Для некоторых 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 .