明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

顯示以O(shè)LE對象存儲圖片的方法

[摘要]問題原型: http://expert.csdn.net/Expert/topic/2517/2517974.xml?temp=.4831049在 ASP 中, 我們經(jīng)常需要在 Web 頁面上顯示以二進(jìn)制方式保存在數(shù)據(jù)庫中的圖片。 一般的圖片顯示沒有什么問題, 因?yàn)檫@方面的文章已經(jīng)很多了, 我就不...

問題原型: http://expert.csdn.net/Expert/topic/2517/2517974.xml?temp=.4831049

在 ASP 中, 我們經(jīng)常需要在 Web 頁面上顯示以二進(jìn)制方式保存在數(shù)據(jù)庫中的圖片。 一般的圖片顯示沒有什么問題, 因?yàn)檫@方面的文章已經(jīng)很多了, 我就不再闡述。 但有時(shí)候數(shù)據(jù)庫中的圖片是通過其他辦公軟件輸入的, 或者通過其他方式, 比如在 Access 中直接添加。 這時(shí), 圖片以 OLE 對象的方式保存在數(shù)據(jù)庫中, 在圖片真實(shí)內(nèi)容的前面, 還保存了一些其他的信息, 比如圖片的路徑和文件名,等等。 如果我們還用一般的輸出方式的話, 就會出錯(cuò), 導(dǎo)致圖片不能顯示。

幸好 jpeg, bmp 等圖象格式中在圖片內(nèi)容的開頭都有一個(gè) SOI marker,這個(gè) marker 對于 jpeg 來說是 FFD8, 而對于 bmp 是 424D. 這樣一來, 我們只要找到這個(gè) marker 的位置, 就可以忽略前面的內(nèi)容而直接從這里開始輸出圖片。以 SQL server 為例,代碼如下:

<%
'---------------------------------
' 函數(shù):function ShowJpegField(field)
' 作者: inelm(Archimond【阿克蒙德】) from csdn
' Date:2003-12-6 更新
' 功能: 取得保存 jpeg 圖片的字節(jié)數(shù)組中的 SOI marker 開始位置, 并從該位置輸出真正的圖片信息
'注: jpeg 格式的 SOI marker : FFD8
' bmp 格式:424D
' 參數(shù):圖片字段
' 返回值: 無
' 調(diào)用范例:ShowJpegField(rs("picture1"))
' 注意: 調(diào)用此函數(shù)之前, 需要先申明 response.write 的 MIME 類型為 "image/jpeg"
'----------------------------------------
function ShowJpegField(field)
dim size, i, j
'要輸出字段的總字節(jié)數(shù)
size = field.ActualSize(出處:pconline)