Получение метаданных изображения APNG

Я пытаюсь получить метаданные apng изображения в данный момент. Мне удалось без проблем получить разные кадры из одного файла apng, и я использую PNGJ (действительно отличную автономную библиотеку Java для чтения и записи изображений PNG), но я не могу получить различную информацию, которая хранится в каждом кадре apng как задержка каждого кадра.

В настоящее время я просто могу получить простую информацию об изображении в формате png, которая хранится в заголовке, используя

PngReader pngr = FileHelper.createPngReader(File);
pngr.imgInfo;

Но я не знаю, как хранить информацию против фрагмента fcTL. Как я могу это сделать?

2 ответа

Решение

Вы пропустили информацию, которую вы используете библиотеку PNGJ. Как я уже упоминал в другом ответе, эта библиотека не анализирует фрагменты APGN (fcTL, fdAT). Он загружает их (вы можете проверить их в свойстве ChunksList), но они будут установлены как "НЕИЗВЕСТНЫЕ" чанки, поэтому двоичные данные будут оставлены в необработанном виде. Если вы хотите заглянуть внутрь содержимого чанков fcTL, вы должны либо проанализировать двоичный файл самостоятельно, либо реализовать собственную логику для этого типа чанка и зарегистрировать ее в считывателе ( вот пример для пользовательского чанка).

Посмотрите, как вы в настоящее время читаете 4-байтовое целое число 'seq' из fdAT.

Вы можете прочитать информацию из fcTL таким же образом.

Просто имейте в виду, что некоторая информация хранится в fcTL как 4 байта, некоторые как 2 байта, а некоторые как 1 байт.

Другие вопросы по тегам