Как получить размеры изображения из файла avif?

Я ищу (быстрый) способ получить метаданные изображения из avif-файла в моем java-приложении. В настоящее время это делается для многих форматов изображений путем анализа байтов необработанного заголовка файла.

Я могу распознать файл как avif по последовательности магических байтов в начале файла: ftypavif. Но я не могу найти никакой информации о том, как анализировать (максимальную) ширину и высоту изображения содержащихся изображений. Например, для JPEG2000 я могу искать маркер SIZ 0xFF51 и потом проанализирую размеры, но даже потратив много времени на чтение спецификаций avif, я не могу найти для него что-то подобное.

Мой подход неверен, и я не могу проанализировать размеры изображения без декодирования изображения (изображений)? Или есть какая-то документация (или даже полезная библиотека), которую я пропустил, чтобы получить ширину и высоту из avif-файла?

Любые подсказки приветствуются!

2 ответа

Ищи box (это обязательный блок/элемент), пропустить 4 байта после типа (версия FullBox и флаги) прочитать 4 байта для ширины изображения, прочитать 4 байта для высоты изображения. Выгода ;)

Некоторые файлы AVIF имеют ftypavis (содержит анимацию), и я также видел AVIF с ftypmif1

Если вы хотите анализировать только AVIF, вам сначала нужно понять формат ISOBMFF и контейнер HEIF . Существуют различные свойства (например, пространственные размеры изображения (ispe)), а также различные преобразования (обрезка, поворот, зеркальное отображение). Изображения могут быть сохранены в виде сетки изображений ...

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