如何在C#中从httpHandlers加载动态映像



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

在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),我想尝试在代码后面加载图像,并以这种方式将其输出到PDF。然而,我不知道如何在后面的代码中加载此图像。我尝试了以下方法:

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

但是运气不好。有没有一种合适的方法可以从我指定的httpHandler在代码后面加载这个图像?

编辑:我找到了一个解决方法,因为我无法从代码后面加载图像。相反,我只是使用<asp:图像>控件在页面上加载文件并触发处理程序。当处理程序创建System.Drawing.Image文件时,我可以将其添加到Session对象中,以便稍后在该页面上使用。然而,如果不使用前端ASP控件,我仍然无法找到从后面的代码中触发所有这些的方法。

您将asp:image拥有和id作为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);
   }
}

最新更新