У вас jpeg

У вас jpeg

Мне нужно найти размер jpeg (jfif) изображения. Изображение не сохраняется как отдельный файл, поэтому я не могу использовать GetFileSize или любой другой API, такой как этот (изображение помещается в поток, и никакой другой заголовок не присутствует, за исключением обычного заголовка jpeg/jfif (s).

Я провел некоторое исследование и выяснил, что изображения в формате JPEG состоят из разных частей, каждая часть начинается с маркера кадра (0xFF; XX) и размером этого кадра. Используя эту информацию, я смог разобрать много информации из файла.

Проблема заключается в том, что я не могу найти размер сжатых данных, поскольку, по-видимому, маркер рамки для сжатых данных отсутствует. Кроме того, кажется, что сжатые данные следуют маркеру SOS (FF; DA), и изображение заканчивается маркером конца изображения (EOI) (FF; D9).

Для этого можно было бы искать маркер EOI от байта до байта, но я думаю, что сжатые данные могут содержать эту комбинацию байтов, правильно?

Знаете ли вы простой и правильный способ найти общий размер изображения? (Я бы предпочел бы какой-нибудь код/​​идею без какой-либо внешней библиотеки, пожалуйста:))?

В принципе, мне нужно расстояние (в байтах) между началом изображения (SOI-FFE0) и концом изображения (EOI-FFD9).

источник поделиться

Источник: qaru.site


Добавить комментарий