System.Drawing.Image как источник для контейнера изображений asp.net - PullRequest
0 голосов
/ 12 мая 2010

Я создал изображение из байтового массива

System.Drawing.Image newImage;
using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
       ms.Write(imageBytes, 0, imageBytes.Length);
       newImage = System.Drawing.Image.FromStream(ms, true);                
}

и теперь мне нужно иметь это изображение в качестве источника для asp: Image (System.Web.UI.WebControls.Image). Возможно ли это, поскольку я знаю, что преобразование невозможно?

Ответы [ 2 ]

1 голос
/ 16 октября 2011

Если вы начинаете с байтового массива, просто отправьте его. Нет необходимости анализировать и перекодировать его, если вам не нужно менять формат изображения.

Если вам нужно выполнить манипуляции с изображениями, вы можете рассмотреть существующую библиотеку , которая не имеет утечек памяти и оптимизирована для сервера . Вызовы GDI опасны на сервере - вы должны точно знать, что вы делаете.

Для лучшей производительности используйте HttpModule для ответа на запрос. Страница aspx, предложенная MUG4N, добавит значительную нагрузку к запросу. .Ashx будет лучше, чем файл .aspx, но не будет совместимым с MVC и не разрешает кэширование на диске, что может быть достигнуто с помощью вызова HttpModule и RewritePath.

1 голос
/ 12 мая 2010

Используйте следующий код:

  System.IO.MemoryStream ms = new System.IO.MemoryStream();
  image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
  Response.ClearContent();
  Response.ContentType = "image/Gif";
  Response.BinaryWrite(ms.ToArray());


<asp:Image ID="Image1" runat="server" ImageUrl="~/pic.aspx"/>
...