текстовая информация GIF

 

Вернулся к незавершенной задаче - просмотра текстовых комментариев формата GIF. Взял за основу описание, вооружился редактором HXD и начал писать код. Начало было легким - разбор файла пошел по описанию:


И тут я споткнулся на Graphic Controil Extension и долго пытался разобраться, как хранятся эти данные? Просмотр данных в HXD помог понять:


Ребятки повсюду использовали однобайтные значения длин блоков, поэтому вышло проще: получить длину NN, пропустить(для текстов получить NN байт) и повторить, пока не наткнешься на нулевой Block Terminator.

Код работает, но остался один блок - Plain Text Extension. Где мне взять такую картинку? Google услужливо досказал - BOB_89A.gif


Картинка сразу же нашлась, и тут нашелся ошибочный код - я не учел подобный способ хранения данных длиннее 255 байт, и все же исправил. Проверил несколько взятых файлов GIF - прошло все четко. И все же я сомневаюсь, что программа работает - нашлось несколько исходников C - gifinfo, giftext, которые подавились на картинках.Поэтому пусть полежит здесь.

Проверил работу Microsoft GIF Animator - тот без изысков дописывает текст в хвост файла перед ограничителем $3B. Теоретически можно попробовать вписать комментарий частями, если длина больше 255 байт после Global Color Table и дописать остатки картинки, только надо ли оно?

Дополнение 01.10.2025. Все же вылезла одна ошибка - не обрабатывался Plain Text Extension. исправлено.

Комментарии