powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как в классе Page отобразить Image из двоичных данных ?
18 сообщений из 18, страница 1 из 1
Как в классе Page отобразить Image из двоичных данных ?
    #38825757
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Подскажите можно-ли как-то показать картинку не просто указав ссылку(т.к. ее нету), а подгрузить байты программно?
вот в таком контексте:
Код: c#
1.
2.
3.
byte[] photo = System.Convert.FromBase64String(objP.photoString);
Image img = new Image();
//img.ЗаполнитьИз(photo)  
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38825779
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser,

если картинка маленькая, можно запхать её в data:URI , а если большая, то только отдавать отдельно по ссылке.
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38825829
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser,

How to display image inside web form from Byte Array with C

.. т.е. либо прямо base64 строку вставить в data:image, либо создать отдельную страницу (.aspx например, или ashx), где байты будут выливаться в Response прямо в Page_Load, и эту страницу прописать в разметке <asp:Image ImageUrl="MyPicture.aspx">
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38825927
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikAspUser,

How to display image inside web form from Byte Array with C

.. т.е. либо прямо base64 строку вставить в data:image, либо создать отдельную страницу (.aspx например, или ashx), где байты будут выливаться в Response прямо в Page_Load, и эту страницу прописать в разметке <asp:Image ImageUrl="MyPicture.aspx">1. Handler - это не страница;
2. Страница - это плохой вариант. Handler лучше.
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38825945
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserДобрый день! Подскажите можно-ли как-то показать картинку не просто указав ссылку(т.к. ее нету), а подгрузить байты программно?
вот в таком контексте:
Код: c#
1.
2.
3.
byte[] photo = System.Convert.FromBase64String(objP.photoString);
Image img = new Image();
//img.ЗаполнитьИз(photo)  

Где показать-то? Этот кусок кода где должен выполнятся?
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38825958
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser, берём пример со StackOverflow и переделываем под Вас:

1. On your Page.aspx page:
Код: plaintext
1.
<asp:Image id="photo" runat="server"></asp:Image>


2. Then in your CodeBehind file Page.aspx.cs :
Код: c#
1.
photo.ImageUrl = "data:image/jpeg;base64," + objP.photoString;


Сойдёт? :)
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38825995
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
..я не стал терминологически распространяться, да, вы правы, но я использовал просто страницы, они работают .. хуже? .. возможно ... чем? ... не знаю ...
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826878
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подумав над вашими ответами реализовал логику описанную ниже. Хотел бы услышать критику или советы по поводу реализации может что-то совсем не оптимально в таком решении или чревато ошибками ? В общих чертах задача отобразить картинки(и данные) поступающие от стороннего приложения(картинки могут быть и большими), поступать они будут по 10-100 штук когда пользователь например кликает по группе товаров.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 protected void Page_Load(object sender, EventArgs e)
 {
      ...
            List<Product> Products = jsonSerialization.Deserialize<List<Product>>(responseFromServer);

            //Создать структуру соответствий
            Dictionary<string, string> tabPics = new Dictionary<string, string>();

            foreach (Product objP in Products)
            {
                tabPics.Add(objP.Id, objP.photoString);//установить соответствие
                Image img = new Image();
                //img.ImageUrl = "data:image/jpeg;base64," + objP.photoString;//Отлично работает
                img.ImageUrl = ResolveUrl("ImageDb.ashx?Id=" + objP.Id);//Тоже отлично работает
         
            }
            //Положить таблицу соответстви в Session
            Session["tabPics"] = tabPics;
 }


и вот такая реализация ImageDb.ashx
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 public class ImageDb : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            string Id = context.Request.QueryString["Id"];
            if (Id != null)
            {
                //Найти из Session соответствие по Id
                Dictionary<string, string> tabPics = (Dictionary<string, string>)context.Session["tabPics"];
                string strImg = tabPics[Id];
                
                byte[] photo = System.Convert.FromBase64String(strImg);
                context.Response.Buffer = true;
                context.Response.Clear();
                context.Response.ContentType = "image/jpeg";
                context.Response.Expires = 0;
                context.Response.BinaryWrite(photo);
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826891
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserПодумав над вашими ответами реализовал логику описанную ниже. Хотел бы услышать критику или советы по поводу реализации может что-то совсем не оптимально в таком решении или чревато ошибками?Плохое у Вас вышло решение.

Страница сама по себе является обработчиком HTTP-запросов (реализует IHttpHandler):

Код: c#
1.
public class Page : TemplateControl, IHttpHandler


Получается, что Вы запрашиваете и получаете данные в одном обработчике, а работаете с ними в другом. Нарушается инкапсуляция.

При этом Вы используете объект Session, который блокируется на время обращения к нему:



Underpinnings of the Session State Implementation in ASP.NET

Выходит если пользователь откроет пару-тройку картинок в отдельных вкладках, то он будет ждать пока они последовательно загрузятся.
Также и при рендеринге страницы в браузере, картинки на ней будут подгружаться последовательно, а не параллельно.

Если же пользователь захочет поделиться ссылкой на картинку с другими, то не сможет этого сделать, из-за того, что другие получат ошибку сервера вместо картинки.
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826893
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikskyANA,
..я не стал терминологически распространяться, да, вы правы, но я использовал просто страницы, они работают .. хуже? .. возможно ... чем? ... не знаю ...Как я уже написал выше, страницы сами по себе являются Handler-ами.

И грубо говоря получается, что Вы фактически реализуете обработку определённых запросов не прямо, через ProcessRequest, а через одно место.
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826979
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAфактически реализуете обработку определённых запросов не прямо, через ProcessRequest, а через одно место.
я просто не понимаю как сделать прямо в моем случае ?
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826986
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser, что из себя представляет стороннее приложение, поставляющее картинки?
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826989
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAAspUser, что из себя представляет стороннее приложение, поставляющее картинки?
http-сервис отдающий JSON
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826992
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserskyANAAspUser, что из себя представляет стороннее приложение, поставляющее картинки?
http-сервис отдающий JSONХм. Заросить отдельное изображение по id у него можно?
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826994
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[/quot]Хм. Заросить отдельное изображение по id у него можно?[/quot]
Да в принципе можно , но удобнее цельно ведь товары по группе получать (элемент товара содержит цена, описание, фото), а если еще отдельно при выводе фото с http-сервиса дергать, то оно наверное создаст доп. нагрузку на http-сервис. Кстати я проверил вариант img.ImageUrl = "data:image/jpeg;base64," + objP.photoString; , то в IE очень шустро работает при втором обращении как будто из кэша берет(даже сервис не дергает), а гуглхром каждый раз как первый
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38826996
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. Заросить отдельное изображение по id у него можно? Только как base64
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38827010
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserДа в принципе можно , но удобнее цельно ведь товары по группе получать

Плохо для SEO, следовательно такой подход сразу идёт в лес.
...
Рейтинг: 0 / 0
Как в классе Page отобразить Image из двоичных данных ?
    #38827755
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserХм. Заросить отдельное изображение по id у него можно?[/quot]
Да в принципе можно , но удобнее цельно ведь товары по группе получать (элемент товара содержит цена, описание, фото), а если еще отдельно при выводе фото с http-сервиса дергать, то оно наверное создаст доп. нагрузку на http-сервис. Кстати я проверил вариант img.ImageUrl = "data:image/jpeg;base64," + objP.photoString; , то в IE очень шустро работает при втором обращении как будто из кэша берет(даже сервис не дергает), а гуглхром каждый раз как первый[/quot]А пользователи, просматривающие одни и теже группы товаров не создают разве "доп. нагрузку на http-сервис"? :)

Кэшируйте данные от стороннего сервиса и все дела. Фотографии товаров я бы вообще на диск складывал.

Хотя может Вы лукавите, когда пишете, что " поступающие от стороннего приложения картинки могут быть и большими , поступать они будут по 10-100 штук когда пользователь например кликает по группе товаров".

Если сервис шустро отдаёт их в рамках одного запроса, то может и Вам пока не стоит заморачиваться?
Вы пробовали смотреть, что будет например при нагрузке в 10 пользователей одновременно к группе из сотни товаров?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как в классе Page отобразить Image из двоичных данных ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]