Я столкнулся с той же проблемой с моим GIF кодера классом/декодера Я написал некоторое время назад (и улучшение со временем время). Я нашел решение для этого только вчера. GIF полностью в порядке, проблема на стороне современного интернет-браузера. Зараженные браузеры - это Opera, IE, Chrome (не тестировали другие).
После некоторого исследования по этому вопросу (путем сравнения циклов и изображения, не являющихся зацикливания) я узнал, что эти браузеры GIF декодеров игнорируют циклические параметры в GIF файла. Вместо этого они зависят от недокументированного расширения приложения в первом кадре GIF.
Таким образом, решение состоит в том, чтобы добавить эту команду расширения непосредственно перед данными изображения первого кадра. Добавьте этот кусок:
0x21,0xFF,0x0B,"NETSCAPE","2.0",0x03,0x01,0x00,0x00,0x00
Это заставит браузеры бесконечно зацикливаться.
Вот пример:
![looping](https://i.stack.imgur.com/mDdns.gif)
Hex зрения, так что вы видите, как он добавил:
![hex](https://i.stack.imgur.com/XpyeT.png)
GIF не чувствительна при вставке/переназначения не являющихся кусками изображения для чтобы вы могли вставить это перед первым изображением в любом месте между любым другим расширением. Я положил его непосредственно после заголовка + палитры. Что можно сделать с C++ или любым другим языком. (повторное кодирование не требуется). Для получения дополнительной информации см:
[Редактировать Рид Dunkle]
Вы также можете сделать это вручную с помощью редактора Hex. Я использовал «Hex Fiend» на macOS Sierra.
Искать 21 F9
в начале фрагмента шестнадцатеричного (это заголовок). На фотографии выше, это 21 F9 04 04 00 00 00 00
. Возможно, вы немного отличаетесь, но обратите внимание, что это происходит до 2C
, что знаменует начало блока изображения.
Перед 21 F9
... части, вставки следующих шестнадцатеричной, отмеченный как «расширение применения» в приведенном выше фото:
21 FF 0B 4E 45 54 53 43 41 50 45 32 2E 30 03 01 00 00 00
Сохранить и проверить его.
Аддон по Spektre: Остерегайтесь 21 F9
помечает GFX расширение кусок, который не является обязательным, поэтому он не может присутствовать на всех или каких-либо кадров (но это редкость в наши дни)
показать нам свое изображение - загрузить его где-нибудь –
@ZoltanToth Где бы вы хотели его загрузить? Это файл .gif, который я создал из http://ajaxload.info/. – Ryan
Кажется, что работает - http://jsfiddle.net/3ZWpD/1/ (я использовал тот же генератор для GIF) –