none
Возможность сохранения объекта Bitmap в памяти с последующей ссылкой на него из кода Custom Server Control по Url RRS feed

  • Вопрос

  • Доброго времени , коллеги.
    Думаю что многие встречались с проблемой отображения динамической графики на страницах и в пользовательских серверных элементах управления. Встретился и я.
    Имеется контрол типа Captcha, в коде которого генерируется рисунок и сохраняется (можно на диск, можно в поток) . Его затем надо отобразить в этом-же контроле при построении дерева (в Create child controls). Проблема в том, что единственной возможностью для этого, предусмотренной в ASP.NET, является оформление его как Image и ссылка на записанный на диске файл с рисунком по Url.
    Как избежать записи файла на диск и извлечь рисунок прямо из потока? 

    для справки: Я пытался так

    bm.Save("Тут поток или имя файла", Imaging.ImageFormat.Png) 'Сохранение Битмапа

     

    Dim Img As New System.Web.UI.WebControls.Image() 'Создание  и Извлечение рисунка по Url

    Img.ImageUrl =

    "~/Images/1.png" 

     

     

     


     



    6 февраля 2010 г. 12:53

Ответы

  • Вместе с основной страницей браузеру нельзя отдать сам рисунок "из потока", только ссылку на него.
    Можно перенести саму генерацию bmp из контрола в обработчик динамической картинки, т.е. сделать примерно так:
    1. Контрол положит в Session["captcha"] текст каптчи
    2. На страницу положить Image c ImageUrl = "~/CaptchaImage.ashx"
    3. В обработчике CaptchaImage.ashx достать Session["captcha"], отрендерить, и вернуть как картинку.

    Готовый ashx-обработчик для генерации картинок можно взять на http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16449
    • Предложено в качестве ответа PashaPash 6 февраля 2010 г. 14:21
    • Помечено в качестве ответа VOTECO 6 февраля 2010 г. 15:24
    6 февраля 2010 г. 14:18