我System.Drawing.Bitmap
在 ASP.NET 自定义 Web 服务器控件中动态生成一个,然后我想将此位图作为 WebResource 的一部分提供,因为我不想将它保存在托管计算机上。
有没有办法指示 ASP.NET 将生成System.Drawing.Bitmap
的内容作为其 WebResource 的一部分提供服务?(因此使其成为“嵌入式资源”)
我System.Drawing.Bitmap
在 ASP.NET 自定义 Web 服务器控件中动态生成一个,然后我想将此位图作为 WebResource 的一部分提供,因为我不想将它保存在托管计算机上。
有没有办法指示 ASP.NET 将生成System.Drawing.Bitmap
的内容作为其 WebResource 的一部分提供服务?(因此使其成为“嵌入式资源”)
使用 HTTP 处理程序。处理程序基本上是在从服务器请求具有指定扩展名的资源时执行的一段代码。由于您需要动态生成的图像,您可以在处理程序的代码中执行此操作并将其作为响应返回。嵌入不起作用,因为您只能嵌入静态信息。以下是一些链接:
我在几个没有 HTTP 处理程序的 ASP.NET 项目中做到了这一点。
假设您有一个名为“Fingerprint.jpg”的图像,并将其放在名称空间为“MyNamespace”的 Web 控件库中名为“Images”的子文件夹中。实际上,图像的计算命名空间将是“MyNamespace.Images”。使用构建操作“嵌入式资源”标记该图像。
现在让我们假设在这个 Web 控件库中有一个名为“MyNamespace.SampleWebControl”的 Web 控件类。
在 AssemblyInformation.cs 中,我为每个图像添加了类似的内容:
[程序集:System.Web.UI.WebResource("MyNamespace.Images.Fingerprint.jpg", "image/jpg")]
在上面的示例中,Fingerpint.jpg 图像存储在 Web 控件库根目录下方名为“Images”的文件夹中。
然后在 asp.net 页面的代码隐藏中,您可以使用如下内容:
string imgName = "MyNamespace.Images.Fingerprint.jpg";
Type ctrlType = typeof(MyNamespace.SampleWebControl);
string imageUrl = Page.ClientScript.GetWebResourceUrl(ctrlType, imgName);
然后您可以将该 imageUrl 值用作图像控件或 HTML IMG 标记中的图像 URL。