現在假設在中保存的是你所想要的圖形格式
(GIF, JPEG, BMP, TIFF, 等等等等)現在來看看要怎麼把它們從
中讀出來。
在Access中使用了兩個關鍵的技術來保存圖形
1。使用了bmp格式
2。78個字節的文件頭
<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = "image/bmp"
%>
接著你要干的就是去掉那78個字節的OLE對象的文件頭。
<%
Const OLEHEADERSIZE = 78
nFIEldSize = rs("photo").ActualSize
oleHeader = rs("photo").GetChunk(OLEHEADERSIZE)
imageBytes = rs("photo").GetChunk(nFIEldSize - OLEHEADERSIZE)
Response.BinaryWrite imageBytes
%>
現在舉一個例子:
如果你要得到一個職工的信息,這段信息包括一個介紹和他的圖象。
並且要同時顯示文字和圖形。
代碼如下:(其中的theImg是一個代理頁面)
theImg.
<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = Session("ImageType")
response.BinaryWrite Session("ImageBytes")
Session("ImageType") = ""
Session("ImageBytes") = ""
response.End
%>
Function SetImageForDisplay(fIEld, contentType)
OLEHEADERSIZE = 78
contentType = LCase(contentType)
select case contentType
case "gif", "jpeg", "bmp"
contentType = "image/" & contentType
bytes = fIEld.value
case "ole"
contentType = "image/bmp"
nFieldSize = fIEld.ActualSize
oleHeader = fIEld.GetChunk(OLEHEADERSIZE)
bytes = field.GetChunk(nFIEldSize - OLEHEADERSIZE)
end select
Session("imageBytes") = bytes
Session("imageType") = contentType
End Function
'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole .
<%
sql = "select * from Employees"
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.CursorLocation = 3
oRS.Open sql, "DSN=NW"
SetImageForDisplay oRS("photo"), "ole"
Set oRS.ActiveConnection = Nothing
%>
要顯示圖象的話,只需要在另外一個中,假設為getEmpInfo.中
<img src="theImg."</img>
但這還有一個問題,因為對每個職工的圖形都使用了同一個"theImg."
文件,應該再小小修改一下:
<img src="theImg.?temp=<%= Request.Form("empLastName")%>"</img>
最後再說一點,如何顯示多幅圖象呢?
也就是說如果中有多個字段都保存了圖形,怎麼辦?
其實解決辦法很簡單,只要給SetImageForDisplay多加一個參數
就是用來保存圖形的一個session變量。
例如:
SetImageForDisplay oRS1("photo"), "ole", "empPhoto"
SetImageForDisplay oRS2("logo"), "gif", "compLogo"
<img src="theImg2.?varName=empPhoto&temp=<%= Request.Form("empLastName")%>">
<img src="theImg2.?varName=compLogo&temp=<%= Request.Form("imgCode")%>">
使用這個方法能夠完成下面的功能:
1。能夠從中取出圖形字段。(你唯一需要知道的是中的圖形是什麼格式
bmp?gif?jpeg?ole?)
2.采用session變量 來保存圖形的字節數和content type
需要這些信息來聯結到<IMG>中的屬性
3。只要把theImg放到你想顯示圖形的地方,就能夠顯示圖象了。