顯示以OLE對象存儲圖片的方法
發表時間:2024-06-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]問題原型: http://expert.csdn.net/Expert/topic/2517/2517974.xml?temp=.4831049在 ASP 中, 我們經常需要在 Web 頁面上顯示以二進制方式保存在數據庫中的圖片。 一般的圖片顯示沒有什么問題, 因為這方面的文章已經很多了, 我就不...
問題原型: http://expert.csdn.net/Expert/topic/2517/2517974.xml?temp=.4831049
在 ASP 中, 我們經常需要在 Web 頁面上顯示以二進制方式保存在數據庫中的圖片。 一般的圖片顯示沒有什么問題, 因為這方面的文章已經很多了, 我就不再闡述。 但有時候數據庫中的圖片是通過其他辦公軟件輸入的, 或者通過其他方式, 比如在 Access 中直接添加。 這時, 圖片以 OLE 對象的方式保存在數據庫中, 在圖片真實內容的前面, 還保存了一些其他的信息, 比如圖片的路徑和文件名,等等。 如果我們還用一般的輸出方式的話, 就會出錯, 導致圖片不能顯示。
幸好 jpeg, bmp 等圖象格式中在圖片內容的開頭都有一個 SOI marker,這個 marker 對于 jpeg 來說是 FFD8, 而對于 bmp 是 424D. 這樣一來, 我們只要找到這個 marker 的位置, 就可以忽略前面的內容而直接從這里開始輸出圖片。以 SQL server 為例,代碼如下:
<%
'---------------------------------
' 函數:function ShowJpegField(field)
' 作者: inelm(Archimond【阿克蒙德】) from csdn
' Date:2003-12-6 更新
' 功能: 取得保存 jpeg 圖片的字節數組中的 SOI marker 開始位置, 并從該位置輸出真正的圖片信息
'注: jpeg 格式的 SOI marker : FFD8
' bmp 格式:424D
' 參數:圖片字段
' 返回值: 無
' 調用范例:ShowJpegField(rs("picture1"))
' 注意: 調用此函數之前, 需要先申明 response.write 的 MIME 類型為 "image/jpeg"
'----------------------------------------
function ShowJpegField(field)
dim size, i, j
'要輸出字段的總字節數
size = field.ActualSize(出處:pconline)