Я пишу код для преобразования некоторых изображений, хранящихся в базе данных, в JPEG. Мне нужно проверить, не является ли изображение JPEG, и все, что у меня есть, это byte[]
который я помещаю в MemoryStream
. Текущий код затем подключает его к Bitmap
, что ничего не говорит о изображении.
Оформить свойство Image.RawFormat
. После загрузки изображения из потока вы можете сделать:
if (ImageFormat.Jpeg.Equals(image.RawFormat))
{
// Image is JPEG
}
Вы можете проверить первые несколько байтов. Большинство, но не все, файлы JPEG начинаются с байтовой последовательности FF D8 FF
. Если вам нужно быть уверенным, вам нужно сделать немного больше.
Я написал VB класс пятнадцать лет назад, чтобы сделать это. Я все еще нахожу копии его, плавающие по всему Интернету: https://code.google.com/p/vbgore/source/browse/trunk/Code/GrhDatMaker/CImageInfo.cls?spec=svn45&r=45
Это достаточно легко читать. Это должно быть быстрее, чем загрузка в класс Image
.