在ASP.NET的WebResource中嵌入位图

时间:2010-04-06 12:25:47

标签: c# asp.net on-the-fly webresource

我在ASP.NET自定义Web服务器控件中动态生成System.Drawing.Bitmap,然后我想将此位图作为WebResource的一部分提供,因为我不想将其保存在托管中计算机。

有没有办法指示ASP.NET将生成的System.Drawing.Bitmap作为WebResource的一部分提供服务? (因此将其作为“嵌入式资源”)

2 个答案:

答案 0 :(得分:2)

使用HTTP处理程序。处理程序基本上是从服务器请求具有指定扩展名的资源时执行的一段代码。由于您需要动态生成的图像,因此您可以在处理程序的代码中执行此操作并将其作为响应返回。嵌入不起作用,因为您只能嵌入静态信息。以下是一些链接:

答案 1 :(得分:1)

我在没有HTTP处理程序的几个ASP.NET项目中做到了这一点。

假设您有一个名为“Fingerprint.jpg”的图像,并将其放在Web控件库中名为“Images”的子文件夹中,其名称空间为“MyNamespace”。有效地,您的图像的计算命名空间将是“MyNamespace.Images”。使用构建操作“嵌入式资源”标记该图像。

现在让我们假设在这个Web控件库中有一个名为“MyNamespace.SampleWebControl”的Web控件类。

在AssemblyInformation.cs中,我为每个图像添加了类似的内容:

[assembly:System.Web.UI.WebResource(“MyNamespace.Images.Fingerprint.jpg”,“image / jpg”)]

在上面的示例中,Fingerpint.jpg图像存储在名为“Images”的文件夹中 在Web控件库的根目录下面。

然后在asp.net页面的代码隐藏中你可以使用这样的东西:

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

然后您可以将imageUrl值用作图像控件或HTML IMG标记中的图像URL。