0

我被困在我认为很容易的事情上。我有一个返回 Image 对象的 DLL。我只是不知道如何在网页上显示该图像。

我尝试了几种方法,并在谷歌上搜索了一百万种不同的变体。

是否不能只将 Image 对象绑定到页面上的元素,如 HtmlImage 或简单的 img?

还是我需要将图像转换为流?还是位图?我真的被困住了!

任何帮助表示赞赏......

4

3 回答 3

2

使用 Asp.Net WebForm,最简单的方法是创建自定义 ashx 文件。

在 Visual Studio 中,创建一个新的自定义处理程序(我不确定 Visual Studio 中模板的名称)。这将创建一个 .ashx 文件。

在这个处理程序的代码中,写类似(手下没有VS来测试语法):

public void ProcessRequest(System.Web.HttpContext context)
{

   byte[] raw; 
   using(var ms = new MemoryStream()){
       Image myImage = GetFromDll();
       myImage.Save(ms, ImageFormat.Png);
       raw=ms.ToArray();
   }
   context.Response.ContentType = "image/png";
   context.Response.BinaryWrite(raw);
}

然后,在您的浏览器中,导航到http://yourserver/app/yourhandler.ashx.

如果你想添加 url 参数,你可以从 Request.QueryString 集合中获取它

于 2012-06-08T12:47:26.387 回答
1

它不像绑定那么简单。在客户端,图像作为单独的 GET 请求从 Web 服务器检索,这意味着您必须具有解析为图像的 URL。正如 Asif 建议的那样,另一种选择是将您的图像作为 Base64 字符串嵌入 HTML 中,这对于共享图像来说是一种不好的做法(请参阅 Steve B 的评论)。

您必须提供一个 URL(在 MVC 中返回图像文件的路由,或者具有适当内容类型和 WebForms 中的 Response.Write 的自定义页面),或者嵌入 html。

编辑:还有第三个选项涉及自定义 HTTP 处理程序。这些具有绕过应用程序框架并几乎直接从 Web 服务器提供内容的优势,请参阅MSDN

于 2012-06-08T12:39:02.120 回答
0

将您的图像转换为 base64 字符串,然后将其设置在<img/>标签中。 <img/>可以用base64字符串显示图像。

或者,您可以保存图像并使用<img/>.

于 2012-06-08T12:20:07.963 回答