将 DLL 中的图像放到网页上

本文关键字:网页 图像 DLL | 更新日期: 2023-09-27 18:36:38

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

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

难道不能像 HtmlImage 或简单的 img 一样将 Image 对象绑定到页面上的元素吗?

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

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

将 DLL 中的图像放到网页上

使用 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 集合中获取它

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

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

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

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

或者,您可以保存图像并使用<img/>中的路径。