Ответы пользователя по тегу Обработка изображений
  • Подсчет кадров в GIF

    @Fil
    Простым способом никак, нужно читать весь файл и считать кадры. А чтобы понимать, что это именно начало кадра, а не что-то другое, нужно читать посекционно. В анимированном гифе image descriptor после Graphic Control Extension (по одной на фрейм), вот их и нужно подсчитать. Алгоритм примерно такой:
    • Читаем секцию Header
    • Читаем секцию Logical Screen Descriptor. Из нее узнаем тип таблицы цветов: глобальная или локальная. Также узнаем размер таблицы.
    • Если глобальная, рассчитываем длину секции Global Color Table и пропускаем.
    • Затем, в анимированном gif будет секция Application Extension block (21 FF). Читаем.
    • А дальше запускаем цикл чтения секций Graphic Control Extension (GCE, 21 F9). Каждой секции соответствует один фрейм.
    •    Читаем GCE
    •    Затем Image Descriptor
    •    После будет несколько секций кодов LZW, перед началом которых будет их длина. Зная длины, перепрыгиваем эти секции по одной. Оказываемся в начале следующего GCE.

    Возможно проще воспользоваться сторонним решением :)
    Ответ написан
    Комментировать