<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      如何從ACCESS數據庫中讀取圖形(續)

      [摘要]注意的是你也可以從一個文件中新建一個位圖對象,但使用這樣的方式保存在數據庫中的圖形格式是瀏覽器不能夠識別的。當你往數據庫中保存圖象時,你應該知道你需要使用什么格式來保存你可以把文件中的每一個字節保存下來,或則通過ACCESS/Foxpro的把圖形保存為一個OLE格式。你使用什么格式保存圖象決定了你...
      注意的是你也可以從一個文件中新建一個位圖對象,但使用這樣
      的方式保存在數據庫中的圖形格式是瀏覽器不能夠識別的。
      當你往數據庫中保存圖象時,你應該知道你需要使用什么格式來保存
      你可以把文件中的每一個字節保存下來,或則通過ACCESS/Foxpro的把圖形保存
      為一個OLE格式。
      你使用什么格式保存圖象決定了你在ASP中用什么格式來讀出圖形來。
      具體來說,如果你在ACCESS/FoxPro中將圖形保存為bmp,gif,jpeg(
      這個必須要使用到ACCESS/FoxPro的OLE對象,即使用ACCESS的插入對象
      對話框來完成),這是當你使用
      image/bmp時瀏覽器是不能夠解釋的。

      現在假設在數據庫中保存的是你所想要的圖形格式
      (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.asp
      <%
      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
      %>

      要顯示圖象的話,只需要在另外一個asp中,假設為getEmpInfo.asp中
      <img src="theImg.asp"</img>
      但這還有一個問題,因為對每個職工的圖形都使用了同一個"theImg.asp"
      文件,應該再小小修改一下:
      <img src="theImg.asp?temp=<%= Request.Form("empLastName")%>"</img>

      最后再說一點,如何顯示多幅圖象呢?
      也就是說如果數據庫中有多個字段都保存了圖形,怎么辦?
      其實解決辦法很簡單,只要給SetImageForDisplay多加一個參數
      就是用來保存圖形的一個session變量。
      例如:
      SetImageForDisplay oRS1("photo"), "ole", "empPhoto"
      SetImageForDisplay oRS2("logo"), "gif", "compLogo"

      <img src="theImg2.asp?varName=empPhoto&temp=<%= Request.Form("empLastName")%>">
      <img src="theImg2.asp?varName=compLogo&temp=<%= Request.Form("imgCode")%>">

      使用這個方法能夠完成下面的功能:
      1。能夠從數據庫中取出圖形字段。(你唯一需要知道的是數據庫中的圖形是什么格式
      bmp?gif?jpeg?ole?)
      2.采用session變量 來保存圖形的字節數和content type
      asp需要這些信息來聯結到<IMG>中的屬性
      3。只要把theImg放到你想顯示圖形的地方,就能夠顯示圖象了。






      日韩精品一区二区三区高清