【问题标题】:How to Load dynamic Image from httpHandlers in C#如何在 C# 中从 httpHandlers 加载动态图像
【发布时间】:2012-07-19 21:52:50
【问题描述】:

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

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

<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 后面的代码中加载这个图像?

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

【问题讨论】:

    标签: c# asp.net image httphandler


    【解决方案1】:

    你的 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);
       }
    }
    

    【讨论】:

    • 'System.Drawing.Image.FromFile("My.image.aspx")' 不会加载图像,因为它说找不到文件。 ASP.NET Image 控件不包含 FromFile 属性,最后 ASPX 上的图像是与 System.Web.UI.WebControls 库不同类型的图像。
    • @user1048281 你的权利我被跟踪了我已经更新了答案
    • 这可以加载图像。但我想将图像文件存储为 System.Drawing.Image 类型以供输出。编辑:这也是我已经在做的事情......只是从后面的代码。
    • @user1048281 查看更新的答案,这会将图像写入您的输出流
    • 给出“参数无效”。加载位图时的异常与尝试此 System.Drawing.Image.FromFile("My.image.aspx"); 时的异常相同
    猜你喜欢
    • 2020-02-11
    • 2020-04-23
    • 1970-01-01
    • 2011-02-01
    • 2014-03-03
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多