Как хранятся данные в файле изображения

Мне интересно на низком уровне, как хранятся данные изображения. Например, можно поднять изображение в Windows и получить информацию об изображении (Используемая камера, дата и т.д.).

На общем уровне (я уверен, что png, jpeg и т.д. отличаются) у изображений есть некоторый тип раздела заголовка, где определены свойства, и, возможно, раздел тела, который задает цвет для определенного пикселя через многомерный массив?

Каким может быть источник изображения, если бы вы могли посмотреть источник, похожий на веб-страницу? Если я открываю JPEG на своем компьютере, первые несколько строк выглядят как XML.

Ответ 1

XML, который вы видите, является частью Формат файла сменного образа (или Exif). Если вы посмотрите на файл в редакторе Hex, вы должны увидеть такие маркеры:

Каждый файл JPEG начинается с двоичного значения "0xFFD8", заканчивается двоичным значение '0xFFD9'. В данных JPEG есть несколько двоичных данных 0xFFXX, они называются "Маркеры", а это означает период JPEG информационные данные. 0xFFD8 означает SOI (начало изображения), 0xFFD9 означает EOI (Конец изображения).

Файл PNG всегда будет начинаться с этих восьми байтов: 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A. Затем он имеет аналогичный механизм для JPEG с использованием байтовых маркеров для указания разделов данных. Прочтите полную спецификацию здесь.