using System.IO
定义一个MemoryStream对象
他有一个writer方法,格式为(字节数组,偏移,长度)
其中字节数组是Command对象从数据库字段生成的
用MemoryStream 对象创建Bitmap
Response.ContenType="image/gif"
调用Bitmap的Save方法。具体的思路好象是这样,原码在一个网站上,我找找
定义一个MemoryStream对象
他有一个writer方法,格式为(字节数组,偏移,长度)
其中字节数组是Command对象从数据库字段生成的
用MemoryStream 对象创建Bitmap
Response.ContenType="image/gif"
调用Bitmap的Save方法。具体的思路好象是这样,原码在一个网站上,我找找
非常好用。问题是数据库中必须还有一个字段指定文件的扩展名,以再程序中识别文件类型。
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