2012-06-19 2 views
0

У меня есть страница http://www.mysite.com/image.aspx, что я хочу загрузить и отобразить изображение вместо рендеринга HTML.Render image на страницу

У меня есть ContentType страницы, установленной на image/png, и вот мой код:

using (Bitmap image = new Bitmap("http://www.google.com/images/img.png")) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
     ms.WriteTo(Response.OutputStream); 
    } 
} 

Но я получаю сообщение об ошибке сказав: форматы

URI не поддерживается.

Как я могу загрузить внешний образ и сделать его на страницу?

ответ

4

Вы не можете загрузить растровое изображение с использованием URI - он должен быть локальным файлом на вашем компьютере.

Если вы хотите загрузить изображение из Интернета и затем визуализировать его, вам необходимо сделать веб-запрос на этот конкретный ресурс, а затем визуализировать байты в потоке, как вы это делаете.

AKA

WebRequest webRequest = WebRequest.Create("http://www.google.com/images/img.png"); 
using(WebResponse response = webRequest.GetResponse()) 
{ 
    using(MemoryStream stream = new MemoryStream(response.GetResponseStream()) 
    { 
     stream.WriteTo(Response.OutputStream); 
    } 
} 
+0

Я получаю ошибку компиляции, говоря 'The лучший перегруженный матч метод для System.IO.MemoryStream.MemoryStream (байт []) имеет некоторые недопустимое arguments' - это еще один способ создать MemoryStream из WebResponse? – Steven

+0

Вышеупомянутый ссылочный пример кода может быть не совсем корректным, поскольку я просто напечатал его из памяти. Однако в худшем случае поток, который вы возвращаете из «GetResponseStream», может напрямую записываться в буфер в MemoryStream, выполняя вызов «Read». – Tejs