У меня есть «изображение» JPEG (на самом деле BLOB в базе данных), которое я хочу импортировать / преобразовать в структуру «Bitmap» в памяти. Причина в том, что я использую стороннюю библиотеку, которая не может работать с изображениями JPEG, и мне нужно передать несжатое растровое изображение (как указатель). Все, что я нашел до сих пор, - это способы конвертировать между разными форматами на диске, но сначала сохранить изображение как растровое, а повторный импорт займет слишком много времени.
Я мало что знаю о .NET, но думаю, что System.Drawing.Bitmap должен уметь хранить несжатые данные. Я работаю с C# и Visual Studio 2008.





// blob is a byte[] retrieved from DB
Bitmap bmp = new Bitmap(new MemoryStream(blob));
Я обновил ответ, чтобы избежать ошибки, о которой упомянул Джон.
Когда я пробую это в Windows Mobile 6.1, я получаю исключение ArgumentException, в котором говорится, что параметр недействителен. Я знаю, что массив в MemoryStream действительно содержит изображение Jpeg и начинается с 0xff 0xd8. Есть идеи, почему это может происходить?
Просто предупреждение - не закройте поток самостоятельно! (Не то чтобы ответ был, но это очевидная вещь, которую стоит попробовать.) После построения Bitmap он «владеет» потоком. Удаление растрового изображения закроет поток. Он расстроится, если вы сначала закроете поток.