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