Как определить, что содержимое байта [] является JPEG?

У меня есть небольшой массив байтов (менее 25 КБ), который я получаю и декодирую как часть большого конверта сообщения. Иногда это изображение, тем более что это JPG. У меня нет контекстной информации, кроме массива байтов, и мне нужно определить, является ли это изображением, и если изображение имеет тип JPG.

Есть ли какое-то магическое число, или магические байты, которые существуют в начале, конце или с некоторым смещением, на которое я могу посмотреть, чтобы идентифицировать это?

Пример моего кода выглядит следующим образом (по памяти, а не c / p):

byte[] messageBytesAfterDecode = retrieveBytesFromEnvelope();
if(null != messageBytesAfterDecode && messageBytesAfterDecode > 0){
    if(areTheseBytesAJpeg(messageBytesAfterDecode)){
        doSomethingWithAJpeg(messageBytesAfterDecode)
    }else{
        flagEnvelopeAsHavingBadContentInTheField();
    }
}

Мне действительно нужно то, что входит в метод

areTheseBytesAJpeg(byte[] mBytes){}

, или даже указатель на спецификацию, которая его детализирует. Я надеюсь, что есть очень быстрый способ сделать это определение, так как я действительно не хочу читать их в Образе и т.д.

30
задан DanielV 3 September 2019 в 15:01
поделиться