У меня есть небольшой массив байтов (менее 25 КБ), который я получаю и декодирую как часть большого конверта сообщения. Иногда это изображение, тем более что это JPG. У меня нет контекстной информации, кроме массива байтов, и мне нужно определить, является ли это изображением, и если изображение имеет тип JPG.
Есть ли какое-то магическое число, или магические байты, которые существуют в начале, конце или с некоторым смещением, на которое я могу посмотреть, чтобы идентифицировать это?
Пример моего кода выглядит следующим образом (по памяти, а не c / p):
byte[] messageBytesAfterDecode = retrieveBytesFromEnvelope();
if(null != messageBytesAfterDecode && messageBytesAfterDecode > 0){
if(areTheseBytesAJpeg(messageBytesAfterDecode)){
doSomethingWithAJpeg(messageBytesAfterDecode)
}else{
flagEnvelopeAsHavingBadContentInTheField();
}
}
Мне действительно нужно то, что входит в метод
areTheseBytesAJpeg(byte[] mBytes){}
, или даже указатель на спецификацию, которая его детализирует. Я надеюсь, что есть очень быстрый способ сделать это определение, так как я действительно не хочу читать их в Образе и т.д.