чтение нескольких изображений JPG из одного файла

0

У меня есть файл, содержащий несколько jpg-изображений. Я хочу читать их один за другим в буферах, чтобы их декодировать отдельно. Я не знаю, есть ли другая информация, сохраненная в файле, отличном от заголовков изображений и данных изображения.

Изображение jpg начинается с байта SOI и заканчивается байтом EOI. Могу ли я предположить, что эти байты появляются только в начале и в конце изображения? Затем я попытался бы прочитать символы без знака в буфер и только проверить, нашел ли я СОИ или EOI.

Будет ли это работать? (Тем не менее на этапе планирования, поэтому кода еще нет... будет в c или c++, хотя)

Теги:
jpeg

1 ответ

3
Лучший ответ

Маркеры на самом деле два октета, 0xFF плюс фактический код маркера. SOI - 0xFF, 0xD8 и EOI - 0xFF, 0xD9. Кроме того, в стандарте указано, когда вы кодируете данные изображения, если вы кодируете октет 0xFF (т.е. Это не маркер), тогда вам нужно следовать ему с помощью 0x00, чтобы декодеры/сканеры не считали его маркером (это так называемая байтовая начинка). Во всяком случае, учитывая это, вы должны хорошо сканировать маркеры SOI и EOI.

Изменить: вы можете найти изображения с встроенными миниатюрами... в этом случае вам может потребоваться подсчет маркеров... например, 0xFF, 0xD8,... 0xFF, 0xD8,... 0xFF, D9... 0xFF, D9 будет одним изображением со встроенным эскизом.

  • 0
    Вы случайно не знаете, могу ли я просто проверить, является ли (c == 0xFF) символ c без знака?
  • 0
    Да, это было бы хорошо.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню