2012-03-21 3 views
0

Я сохранил изображение в виде BLOB (Varbinary (max)) в базе данных. Я закодировал изображение как .NET Bitmap TIFF. При отображении изображения на странице я могу установить тип содержимого как JPEG, GIF и т. Д., И изображение всегда отображается правильно на веб-странице. Я ожидал бы, что изображение будет отображаться только правильно, если я задал тип содержимого как TIFF (поскольку он был закодирован как TIF). Я использую класс Bitmap. Я что-то упускаю?.NET Bitmap Object

Вот код:

objCmd.CommandText = "SELECT Img FROM dbImage where id = 1 
       dr = objCmd.ExecuteReader 
       dr.Read() 

       screenshot = CType(dr("screenshot"), Byte()) 
       Response.ContentType = "image/tiff" 
       Response.BinaryWrite(screenshot) 
       Response.Flush() 
       Response.End() 

BLOB изображение кодируется как TIFF. Однако при извлечении изображения он будет отображаться в JPG и GIF. Например, если я изменил response.contenttype на "image/jpg", то он по-прежнему отображается. Вопрос в том, почему он все еще отображается? У меня нет большого опыта обработки изображений.

+0

Вы пытаетесь перекодировать изображение, установив заголовок Content-Type? Или просто интересно, почему его настройка не нарушает работу браузера? –

+0

@Boo, спасибо. Да, я устанавливаю Тип контента, а затем использую BinaryWrite для отображения изображения (только для тестирования - в живой системе будет обработчик изображений ASHX). – w0051977

+0

Итак, какой вопрос, который я задал, относится к вашему «Да», если таковое имеется? –

ответ

0

Причина, по которой он по-прежнему отображается, заключается в том, что современные браузеры игнорируют заголовок контента для изображений (основанный на наблюдении и тестировании, а не на документации). Первые несколько байтов почти каждого изображения расскажут вам, в каком формате он находится. Я полагаю, что браузеры (и используемые ими графические библиотеки) смотрят на эти байты (как это делает .NET) вместо того, чтобы полагаться на заголовок типа контента.

Веб-сервер НЕ повторного кодирования изображения

+0

спасибо. Еще одна вещь, перед которой я закрываю этот вопрос. Я думал, что изображения TIFF не будут отображаться в веб-браузерах (я использую IE8 и Windows 7). Тем не менее, изображения TIFF, которые я сохранил в базе данных, отлично отображаются в IE8 и Firefox. Другой пользователь сказал, что их тесты доказали, что иногда появляется изображение TIFF, а иногда нет. Это так? – w0051977

+0

Я не пытался отображать TIFF в браузере с IE7 (например, слишком давно, чтобы я помнил результаты этих расследований). В Интернете в Интернете говорится, что вы ограничиваете количество данных, которые должны загружать ваши пользователи. Его дешевле для них и значительно дешевле для вас. Так что застрял в Jpg, Png, и в очень редком случае Gif. –