Если вы знаете минимальное количество о структуре формата файла, вы можете теоретически просматривать верхние байты файла, пока не сможете определить, какой это тип файла.
Например, изображение GIF всегда начинается со следующих байтов GIF89a
. Если вы можете найти эту строку в начале файла, вы можете быть достаточно уверены, что это изображение в формате GIF и абсолютно уверены, что это не какой-либо другой формат изображения. (хотя это все же может быть текстовый файл, который, как правило, начинается с «GIF89a»; вам нужно проанализировать больше файлов, чтобы быть абсолютно уверенным)
Аналогично, PNG-файлы имеют строку PNG
довольно близко к началу (это не совсем в самом начале; опять же, вам нужно изучить особенности формата файла, чтобы помочь вам определить, сколько вам нужно знать чтобы быть уверенным).
JPEG также содержат узнаваемые строки в своих заголовках, хотя они более разнообразны и сложны. Возможно, вы захотите посмотреть на строку Exif
.
Получение определений форматов файлов определенно даст вам больше точности, но в зависимости от того, насколько точным вы должны быть, вы можете узнать достаточно о форматах файлов, просто открыв некоторые файлы изображений в двоичном редакторе, чтобы увидеть, как они структурированы. .
Эти ресурсы могут вам помочь: