如何从C#中的httpHandlers加载动态图像

时间:2012-07-20 15:30:44

标签: c# asp.net image httphandler

我有一个ASP.NET应用程序,它有一个生成Image的库。它设置如下:

在Web.config中,我在< httpHandlers> 部分中有一个声明,如下所示:

<add path="My.image.aspx" verb="GET" type="MyProject.Handlers.MyImageHandler, MyProject" validate="false"/>

这会链接代码以生成该路径的图像,然后在我的.aspx页面上使用,如下所示:

<asp:Image ImageUrl="My.image.aspx" BorderWidth="0" ID="myImage" runat="server"/>

正常查看此页面时,图像已正确加载。

但是,我需要将此图像输出到PDF文件,但因为PDF不能正确解释具有该URL的页面HTML(说它无法找到资源,因为这些文件仅限于解释基本的HTML / CSS ),我想尝试在后面的代码中加载Image并将其输出到PDF。但是,我不知道如何在后面的代码中加载此图像。我尝试了以下方法:

System.Drawing.Image img = System.Drawing.Image.FromFile("My.image.aspx");

但没有运气。有没有一种正确的方法从我指定的httpHandler后面的代码中加载这个Image?

编辑:我找到了一种解决方法,因为我无法从后面的代码中加载Image。相反,我刚刚使用了&lt; asp:Image&gt;控制加载页面上的文件并触发处理程序。当处理程序创建System.Drawing.Image文件时,我能够将它添加到Session对象中,以便稍后在该页面上使用。但是,我仍然无法在不使用前端ASP控件的情况下找到从后面的代码中触发所有内容的方法。

1 个答案:

答案 0 :(得分:0)

你asp:image has和id as myImage

所以在后面的代码中你可以这样使用它

using (Bitmap theImage = new Bitmap("My.image.aspx"))
{
   using(MemoryStream stream = new MemoryStream())
   {
      theImage .Save(stream , System.Drawing.Imaging.ImageFormat.Png);
      stream .WriteTo(context.Response.OutputStream);
   }
}