У меня возникла проблема с встраиванием пользовательских GIF-изображений (созданных в ScreenToGif) в сообщения на платформе Discourse. При вставке GIF оно работает некоторое время, а затем застывает на первом кадре, например:
В предварительном просмотре сообщения всё отображается корректно. Также GIF воспроизводится нормально при открытии в новой вкладке браузера. Проблема возникает только внутри самого Discourse.
Я попробовал четыре обходных решения:
Загрузить GIF на другой сайт (например, в S3-бакет), а затем разместить ссылку на него. Это работает до тех пор, пока системный бот не скачает файл локально — после этого GIF снова застывает.
Подумал, что проблема может быть связана с изменением размера, поэтому попробовал убрать разметку Markdown для изображения, например:
Поскольку GIF работал при открытии ссылки в новой вкладке, я попробовал заменить сокращённый URI «upload» на полный URL загруженного изображения, например:
Наконец, предположил, что проблема может быть в интерпретации кода Markdown системой Discourse, поэтому попробовал использовать тег HTML для изображения с полным URL:
К сожалению, ничего не помогло. Если бы я управлял форумом, где хочу разместить сообщение, я бы мог отключить локальную загрузку файлов. Но, увы, у меня нет такой возможности!
Поскольку это работает здесь, но не на вашем сайте, я рекомендую выполнить пересборку вашего сайта и попробовать снова. Мы внесли множество недавних изменений, касающихся GIF-файлов. В течение некоторых периодов у нас были ошибки, подобные той, о которой вы сообщили, и ваш сайт может работать на затронутой версии.
Определённо не размер файла, а «повреждённый» файл, который исправляет gifscicle. Часто можно встретить инструменты, создающие некорректные файлы. Я всегда прогоняю свои GIF через надёжный инструмент, например ffmpeg, перед публикацией. Но даже в этом случае легко получить повреждённый файл, если размеры, например, нечётные.
GIF — сложный формат, и в наше время для большинства задач есть более подходящие варианты, такие как MP4 и WEBP.
Все GIF-изображения в этой теме для меня анимированы (Chrome на Arch Linux), но текущая версия FastImage сообщает, что они не анимированы из-за этой ошибки.
На всякий случай: я столкнулся с несколькими случаями, когда gifsicle не работает. В частности, иногда для получения рабочего GIF требуется использовать флаг --colors 256. Но в других случаях необходимо оставить этот флаг без указания.