页面 ASP.NET 位图图像显示奇怪的字符



我有一个.aspx页面(asp.net),其中包含以下代码:

    <%@ Page ContentType = "image/gif"%>
    <%@ Import Namespace = "System.Drawing" %>
    <%@ Import Namespace = "System.Drawing.Imaging" %>
    <Script Runat = "Server">
    Sub Page_Load
      Dim objBitmap As Bitmap
      Dim objGraphics As Graphics
      objBitmap = New Bitmap(200, 200)
      objGraphics = Graphics.FromImage(objBitmap)
      objGraphics.DrawLine(new Pen(Color.Red), 0, 0, 200, 200)
      objBitmap.Save(Response.OutputStream, ImageFormat.Gif)
      objBitmap.Dispose()
      objGraphics.Dispose()
    End Sub
    </Script>

但是页面上显示的是垃圾文本 - 奇怪的字符,如下所示:

GIF89a 3f ++3+f+ + + + UU3UfU U 3 f 3 f 3 fՙ 3 f{ a q 4 w k [ ѻ 럿 <!lQ@;

如何使图像正确显示?(最终,我想将图像放在表格单元格中)

就处理器使用而言,使用.aspx页面非常昂贵 - "页面生命周期"涉及多个事件,例如Page_Load - 与您需要的相比,它只是发送内容类型(当然,还有一些其他标头)和数据。

如果您使用的是.aspx页面,则必须清除已经为您生成的标头,否则浏览器将被告知接收类似"text/html"的内容。

作为模型,我用以下代码制作了一个处理程序"GetImage.ashx":

Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Web
Imports System.Web.Services
Public Class Handler1
    Implements System.Web.IHttpHandler
    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        context.Response.ContentType = "image/png" ' set correct MIME type here '
        Using objBitmap As Bitmap = New Bitmap(200, 200)
            Using objGraphics As Graphics = Graphics.FromImage(objBitmap)
                objGraphics.DrawLine(New Pen(Color.Red), 0, 0, 200, 200)
                objBitmap.Save(context.Response.OutputStream, ImageFormat.Png)
            End Using
        End Using
    End Sub
    ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return True
        End Get
    End Property
End Class

它会按照您的预期在浏览器中生成图像。

只需以 <img src="http://127.0.0.1/webtest/getimage.ashx" alt=""> 的方式使用图像的 URL。

有关更新的方法,并提供大量说明,请参阅返璞归真:动态映像生成、ASP.NET 控制器、路由、IHttp处理程序和 runAllManagedModulesForAllRequests。

相关内容

  • 没有找到相关文章

最新更新