如何显示图片。
在数据库的某一字段中存有图片(jpg or bmp),如何在网页中将其显示出来? 问题点数:73、回复次数:5Top
1 楼nn18(nn)回复于 2002-01-22 08:07:13 得分 20
using System.IO
定义一个MemoryStream对象
他有一个writer方法,格式为(字节数组,偏移,长度)
其中字节数组是Command对象从数据库字段生成的
用MemoryStream 对象创建Bitmap
Response.ContenType="image/gif"
调用Bitmap的Save方法。
具体的思路好象是这样,原码在一个网站上,我找找
Top
2 楼xdsui()回复于 2002-01-22 08:20:12 得分 25
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.asp
C#:
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保存在硬盘中,然后在网页上动态写入一个链接,指向这个图片即可。
非常好用。问题是数据库中必须还有一个字段指定文件的扩展名,以再程序中识别文件类型。
Top
3 楼icyer()回复于 2002-01-22 08:38:41 得分 28
不用指定扩展名!
我以前也遇到过这种扩展名改变之后就不能显示的情况,以下是我的解决方法:
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
Top
4 楼xdsui()回复于 2002-01-22 13:54:53 得分 0
icyer的方案很不错!Top
5 楼netscaler()回复于 2002-01-23 11:13:08 得分 0
你们说的扩展名的问题是不是从数据库中读出图片写入文件后在浏览器中无法显示,我现在遇到一个问题就是有些生成的图片文件在浏览器中无法显示,但在ACDSEE中可以看,是否就是这个问题?Top




