Загрузите систему.Рисование.Растровое изображение без предварительного сохранения на диск

#c#

Вопрос:

У меня есть Система.Рисование.Растровое изображение, которое нужно загрузить на сервер, все это работает нормально, за исключением того, что я записываю изображение на диск, загружаю изображение на диск, а затем, наконец, удаляю его. Есть ли способ сделать это без предварительного сохранения на диск и загрузки из памяти? Код, который я сейчас использую, выглядит примерно так.

 System.Drawing.Bitmap bmp = new Bitmap(someX, someY); //code to create my image bmp.Save("c:sometempfile.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg); WebClient webClient = new WebClient(); webClient.UploadFile(urlToUploadTo, "POST", "c:sometempfile.jpeg"); System.IO.File.Delete("c:sometempfile.jpeg");  

Комментарии:

1. Подсказка: перегрузка bmp.Save занимает Stream . Есть особый вид Stream , который называется а MemoryStream .

Ответ №1:

Вы можете попробовать что-то вроде этого. Я не тестировал его, так что это зависит от вас, но в основном вы должны записать растровое изображение в поток памяти, после чего вы можете записать этот поток на целевой URL-адрес вашего веб-клиента с помощью нужного метода HTTP.

 using (var client = new WebClient()) {  MemoryStream memoryStream = new MemoryStream();  bmp.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);  memoryStream.Seek(0, System.IO.SeekOrigin.Begin);   using (var postStream = client.OpenWrite(endpointUrl))  {  memoryStream.CopyTo(postStream);  } }  

Комментарии:

1. Вы можете удалить строку, в которой читается файл, больше нет файла для чтения.

2. Tnx, это действительно было не очень полезно :).