Найти тип изображения из потока памяти

1

Я пишу код для преобразования некоторых изображений, хранящихся в базе данных, в JPEG. Мне нужно проверить, не является ли изображение JPEG, и все, что у меня есть, это byte[] который я помещаю в MemoryStream. Текущий код затем подключает его к Bitmap, что ничего не говорит о изображении.

Теги:
jpeg
memorystream

2 ответа

2
Лучший ответ

Оформить свойство Image.RawFormat. После загрузки изображения из потока вы можете сделать:

if (ImageFormat.Jpeg.Equals(image.RawFormat))
{
    // Image is JPEG
}
0

Вы можете проверить первые несколько байтов. Большинство, но не все, файлы JPEG начинаются с байтовой последовательности FF D8 FF. Если вам нужно быть уверенным, вам нужно сделать немного больше.

Я написал VB класс пятнадцать лет назад, чтобы сделать это. Я все еще нахожу копии его, плавающие по всему Интернету: https://code.google.com/p/vbgore/source/browse/trunk/Code/GrhDatMaker/CImageInfo.cls?spec=svn45&r=45

Это достаточно легко читать. Это должно быть быстрее, чем загрузка в класс Image.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню