2010-04-06 4 views
0

Я генерирую System.Drawing.Bitmap «на лету» в ASP.NET Custom Web Server Control, а затем я хочу использовать этот растровый рисунок как часть WebResource, потому что я не хочу сохранять это на хостинг-компьютере.Внедрение растрового изображения в WebResource ASP.NET

Есть ли способ дать указание ASP.NET обслуживать сгенерированный System.Drawing.Bitmap как часть его WebResource? (поэтому делает его «встроенным ресурсом»)

+0

Как вы относитесь к этому изображению на вашей странице? – Lazarus

+0

Тогда я бы получил ссылку на изображение, используя URL-адрес WebResource. Пример: '/WebResource.axd? ...' –

ответ

2

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

+0

+1 Отлично, именно то, что я хотел. Спасибо, что поправился. Я использовал следующую статью, чтобы решить мою проблему: http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx –

1

Я сделал, что в нескольких проектах ASP.NET без обработчика HTTP.

Скажите, что у вас есть изображение под названием «Fingerprint.jpg», и вы поместите его в подпапку под названием «Изображения» в вашей библиотеке веб-управления, пространство имен которой «MyNamespace». Эффективно вычисленное пространство имен вашего изображения будет «MyNamespace.Images». Отметьте это изображение с помощью действия сборки «Встроенный ресурс».

Теперь предположим, что в этой библиотеке веб-управления у вас есть класс управления сетью с именем «MyNamespace.SampleWebControl».

В AssemblyInformation.cs я добавил что-то вроде этого для каждого изображения:

[сборка: System.Web.UI.WebResource ("MyNamespace.Images.Fingerprint.jpg", "изображение/JPG")]

где в приведенном выше примере изображение Fingerpint.jpg хранится в папке с именем «Изображения» прямо под корневым каталогом библиотеки веб-управления.

Затем в коде ASP.NET-странице, вы можете использовать что-то вроде этого:

string imgName = "MyNamespace.Images.Fingerprint.jpg"; 
Type ctrlType = typeof(MyNamespace.SampleWebControl); 
string imageUrl = Page.ClientScript.GetWebResourceUrl(ctrlType, imgName); 

И тогда вы можете использовать это значение ImageUrl как URL на изображении в графическом элементе управления или тега HTML IMG.