using System.IO
定义一个MemoryStream对象
他有一个writer方法,格式为(字节数组,偏移,长度)
其中字节数组是Command对象从数据库字段生成的
用MemoryStream 对象创建Bitmap
Response.ContenType="image/gif"
调用Bitmap的Save方法。具体的思路好象是这样,原码在一个网站上,我找找

解决方案 »

  1.   

    acptvb告诉我的:对于这个问题,您可以参考一下以下的文章。以下的文章提供了详细的代码:VB:ID: Q308042  HOW TO: Read and Write BLOB Data Using ADO.NET with Visual Basic[webdatanetkb]http://support.microsoft.com/support/kb/articles/q308/0/42.aspC#:ID: Q309158  HOW TO: Read and Write BLOB Data Using ADO.NET with Visual C# [webdatanetkb]http://support.microsoft.com/support/kb/articles/q309/1/58.asp我的办法是按照文章中的做法将数据读出来后形成一个文件如:beauty.gif保存在硬盘中,然后在网页上动态写入一个链接,指向这个图片即可。
    非常好用。问题是数据库中必须还有一个字段指定文件的扩展名,以再程序中识别文件类型。
      

  2.   

    不用指定扩展名!我以前也遇到过这种扩展名改变之后就不能显示的情况,以下是我的解决方法:
        Public Function BuildImage(ByVal strau_id As String) As String
            dv.RowFilter = "au_id='" & strau_id & "'"
            If dv.Count = 0 Then
                dv.RowFilter = ""
                Return ("")
            End If
            If IsDBNull(dv(0)("image")) Then
                dv.RowFilter = ""
                Return ("")
            End If        Dim strImagePath As String = MapPath(strau_id & ".jpg")
            Dim strImagePath1 As String = MapPath(strau_id & "1.jpg")        Dim imgData() As Byte
            imgData = dv(0)("image")
            dv.RowFilter = ""
            Dim fs As New IO.FileStream(strImagePath1, IO.FileMode.Create, IO.FileAccess.Write)
            fs.Write(imgData, 0, UBound(imgData))
            fs.Close()
            fs = New IO.FileStream(strImagePath1, IO.FileMode.Open, IO.FileAccess.Read)
            Dim img As System.Drawing.Image
            img = System.Drawing.Image.FromStream(fs) '重新保存图片,之后就不会有扩展名的问题了。
            img.Save(strImagePath, System.Drawing.Imaging.ImageFormat.Jpeg)
            img = Nothing
            fs.Close()
            fs = Nothing
            Dim file As IO.File
            file.Delete(strImagePath1)
            file = Nothing        Return (strImagePath)
        End Function
    我是在pubs数据库的Authors表中增加了一个image类型的字段image。在界面设计中,把Image.Src指向这个函数就可以了:
    <asp:Image id="img" Runat="server" src='<%# BuildImage(DataBinder.Eval(Container,"DataItem.au_id"))%>' Visible='<%# ImageVisible(DataBinder.Eval(Container,"DataItem.au_id"))%>'></asp:Image>ImageVisible函数功能:当数据库中有图片数据时,显示Image控件,否则不显示。
        Public Function ImageVisible(ByVal strau_id As String) As Boolean
            Dim blnImage As Boolean = False
            dv.RowFilter = "au_id='" & strau_id & "'"
            If dv.Count = 1 Then
                If (Not IsDBNull(dv(0)("image"))) Then
                    blnImage = True
                End If
            End If
            dv.RowFilter = ""
            Return (blnImage)
        End Function
      

  3.   

    你们说的扩展名的问题是不是从数据库中读出图片写入文件后在浏览器中无法显示,我现在遇到一个问题就是有些生成的图片文件在浏览器中无法显示,但在ACDSEE中可以看,是否就是这个问题?