Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > .NET

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 20.03.2008, 15:55   #1
Неактивный пользователь
 
Регистрация: 18.03.2008
Сообщений: 5
Репутация: 0
По умолчанию Asp.NET Как отобразить изображение на странице, если оно находится в бд?

С помещением в базу и извлечением из базы изображения всё понятно, помещает туда массив битов, а при извлечении этот маммив битов записывается в файл. Но если мне нужно изображение из базы отобразить на web-странице? Неужели нужно сначала в файл его сохранять, а потом помещать на страницу? Это довольно сложно, может кто знает более простой способ? Интересует именно посредством C#.
Ordos вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: установка airnedarcana stracciatella miscela grafito 60x60вальцы вэм-кYClients и Nethouseреле контроля температуры кр61-6м


Старый 21.03.2008, 14:44   #2
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Ответ: Asp.NET Как отобразить изображение на странице, если оно находится в бд?

Записать полученный из базы поток в Responce.OutputStream.
только сначала надо указать Response.ContentType = "image/jpeg".

Лучше всего пользоваться HTTP обработчиком (.ashx) тогда можешь вставлять картинку в любое место страницы. <img src="getImage.ashx?параметры"/> т.е. браузер запрашивает файл .ashx а тот возвращает что тебе надо. В данном случае обработчик возвращает просто поток прочитанный из базы.
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 15.04.2008, 12:59   #3
igorus77
Постоялец
 
Аватар для igorus77
 
Пол:Мужской
Регистрация: 26.09.2007
Адрес: KG
Сообщений: 380
Репутация: 235
По умолчанию Ответ: Asp.NET Как отобразить изображение на странице, если оно находится в бд?

по своему опыту привожу пример
ProductImage.ashx
<%@WebHandlerLanguage="C#"Class="Elis.Rubin.ProductImage" %>
using System;
using System.Web;
using System.Web.Caching;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace Elis.Rubin
{
publicclassProductImage : IHttpHandler
{
publicvoid ProcessRequest(HttpContext context)
{
// Get the image ID from querystring, and use it to generate a cache key.
String imageIDString = context.Request.QueryString["ProductID"];
Guid imageID;

try
{
imageID =
newGuid(imageIDString);
}
catch (Exception)
{
return;
}

String cacheKey = String.Format("{0}-{1}", context.Request.CurrentExecutionFilePath, imageID);
Byte[] imageBytes;

// Check if the cache contains the image.
Object cachedImageBytes = context.Cache.Get(cacheKey);
if (cachedImageBytes != null)
imageBytes = (
Byte[])cachedImageBytes;
else
{
// Get image from business layer, and save it into a Byte array as JPEG.
ProductsDb products = newProductsDb();
Bitmap bm = products.GetBitmap(imageID);

//Get new image width
int nBitmapWidth = 0;
String sQueryString;
try
{
sQueryString = context.Request.QueryString[
"width"];
nBitmapWidth =
int.Parse(sQueryString);
}
catch (Exception)
{
}
if (nBitmapWidth == 0)
nBitmapWidth = bm.Width;
//Get new image height
int nBitmapHeight = 0;
try
{
sQueryString = context.Request.QueryString[
"height"];
nBitmapHeight =
int.Parse(sQueryString);
}
catch (Exception)
{
}
if (nBitmapHeight == 0)
nBitmapHeight = bm.Height;

Bitmap newBitmap = newBitmap(nBitmapWidth, nBitmapHeight);
Graphics g = Graphics.FromImage(newBitmap);

//Draw background
SolidBrush bgrBrush = newSolidBrush(Color.WhiteSmoke);
g.FillRectangle(bgrBrush,
newRectangle(0, 0, newBitmap.Width, newBitmap.Height));

float sx = (float)nBitmapWidth / bm.Width;
float sy = (float)nBitmapHeight / bm.Height;
float scale = Math.Min(sx, sy);
g.DrawImage(bm, (newBitmap.Width - scale * bm.Width) / 2, (newBitmap.Height - scale * bm.Height) / 2, scale * bm.Width, scale * bm.Height);

MemoryStream stream = newMemoryStream();
newBitmap.Save(stream,
ImageFormat.Jpeg);
stream.Close();
bm.Dispose();
newBitmap.Dispose();
imageBytes = stream.GetBuffer();

// Store it in the cache (to be expired after 2 hours).
context.Cache.Add(cacheKey, imageBytes, null,
DateTime.MaxValue, newTimeSpan(2, 0, 0),
CacheItemPriority.Normal, null);
}
// Send back image.
context.Response.ContentType = "image/jpeg";
context.Response.Cache.SetCacheability(
HttpCacheability.Public);
context.Response.BufferOutput =
false;
context.Response.OutputStream.Write(imageBytes, 0, imageBytes.Length);
}
publicbool IsReusable
{
get
{
returnfalse;
}
}
}
}

и вывод --->
<ItemTemplate>
<divstyle="margin:5">
<center>
<imgwidth=100;height=75;src='<%# "ProductImage.ashx?ProductID="+Eval("model_templat e") +"&width=100&height=75" %>'</center>
</div>
</ItemTemplate>
выдрано конечно с корнем из кода ну думаю разберешься
__________________
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
igorus77 вне форума
 
Ответить с цитированием Вверх
Старый 15.09.2008, 01:51   #4
hVostt
Неактивный пользователь
 
Аватар для hVostt
 
Регистрация: 15.09.2008
Адрес: Сургут
Сообщений: 4
Репутация: 0
По умолчанию Re: Asp.NET Как отобразить изображение на странице, если оно находится в бд?

мне помогло! спасиба, реально работает! я просто подумывал тоже хранить изображения в базе из справочника, удобней это и правильней. до этого в силу малого количества времени на разработку, хранились названия файлов... но это надо отслеживаться, чтобы эти файлы там были, и удалялись как только необходимость в них отпадала. короч, рекомендую!
hVostt вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отобразить дату в другом формате Матвей Н Скорая помощь 14 02.05.2008 12:49
Не возможно отобразить страницу... strannikov Архив 6 17.06.2007 01:51

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:27. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.17941 секунды с 11 запросами