我有一个 ASP.NET 网络表单。这个网络表单有一个生成一些 HTML 的事件处理程序。此 HTML 基于一天中的时间,这就是它在事件处理程序中创建的原因。根据一天中的时间,通过以下方法以编程方式创建图像:
private Bitmap GetImageForTime(DateTime time)
{
Bitmap bitmap = new Bitmap();
// Dynamically build the bitmap...
return bitmap;
}
我想在生成 HTML 时调用此方法。但是,我不想在服务器上写入图像。相反,我想找出一种方法将它与 HTML 一起写出来。从某种意义上说,我正在努力实现以下目标:
protected void myLiteral_Load(object sender, EventArgs e)
{
string html = "<table><tr><td>";
html += GetImageForTime(DateTime.Now); // This is the problem because it's binary.
html += "</td><td>";
html += GetWeatherHtmlText();
html += "</td></tr></table>";
myLiteral.Text = html;
}
这可能吗?如果是,怎么办?
最佳答案
我建议实现 IHttpHandler生成您的图像并将其作为字节流返回。然后在页面的标记中,将 src 属性设置为 HTTP 处理程序的地址。
<html><body><img src="TimeImageHandler.ashx"/></body></html>
一旦了解了通用 HTTP 处理程序,创建它们就非常简单:
public class TimeImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Bitmap bitmap = GetImageForTime(DateTime.Now);
context.Response.ContentType = "image/jpeg";
bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
public bool IsReusable { get { return false; } }
}
关于c# - 将位图添加到 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3104648/