麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

從Access數(shù)據(jù)庫恢復(fù)BMP圖像并顯示在WEB頁面(microsoft)

2019-11-18 22:30:21
字體:
供稿:網(wǎng)友
HOWTO: Retrieving Bitmap from access and Displaying In Web Page

--------------------------------------------------------------------------------
The information in this article applies to:

Active Server Pages
Microsoft Visual Basic PRofessional and Enterprise Editions for Windows, versions 5.0, 6.0
ActiveX Data Objects (ADO), versions 1.0, 1.5, 2.0, 2.1 SP2, 2.5
Microsoft Internet Information Server versions 4.0, 5.0
Microsoft Data Access Components version 2.5

--------------------------------------------------------------------------------


SUMMARY
This article shows by example how to extract the bitmap photos in the Microsoft Access 97 Northwind.mdb
database, and view them from a Web browser using Active Server Pages (asp). In order to accomplish this
task, an ActiveX DLL must be created that strips the Access and OLE headers from the field. This article
shows how to create this ActiveX DLL, and how to implement it.



MORE INFORMATION
WARNING: ANY USE BY YOU OF THE CODE PROVIDED IN THIS ARTICLE IS AT YOUR OWN RISK. Microsoft provides this
code "as is" without warranty of any kind, either express or implied, including but not limited to the
implied warranties of merchantability and/or fitness for a particular purpose.

This article demonstrates how to use Visual Basic to retrieve a bitmap stored in an OLE Object field.
Because the definition of OLE object storage is not documented, the following code searches the object's
OLE header for characters consistent with the start of the graphic. This method may not work in all
circumstances.

Be aware that Internet Explorer 3.0 is unable to display true color bitmaps. For this reason, the bitmaps
stored in the Access database should be no higher than 256 colors.

Step-by-Step Example to Extract the Photos
Create a new project in Visual Basic and make the project an ActiveX DLL.


Add a reference to ActiveX Data Objects (ADO) by clicking the Project menu and selecting References.
Select "Microsoft OLE DB ActiveX Data Objects 1.0 Library" and click OK.


Add a new module to the project by selecting the Project menu and clicking Add Module. Select Module and
click Open.


Place the following code in the (general) (declarations) section of MODULE1.BAS:

      ' Enter the following Declare statement as one single line:
      Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
       (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)

      Type PT
        Width As Integer
        Height As Integer
      End Type

      Type OBJECTHEADER
        Signature As Integer
        HeaderSize As Integer
        ObjectType As Long
        NameLen As Integer
        ClassLen As Integer
        NameOffset As Integer
        ClassOFfset As Integer
        ObjectSize As PT
        OleInfo As String * 256
      End Type



Place the following code in the (general) (declarations) section of CLASS1.CLS:

        Function DisplayBitmap(ByVal OleField As Variant)
        Dim Arr() As Byte
        Dim ObjHeader As OBJECTHEADER
        Dim Buffer As String
        Dim ObjectOffset As Long
        Dim BitmapOffset As Long
        Dim BitmapHeaderOffset As Integer
        Dim ArrBmp() As Byte
        Dim i As Long

        'Resize the array, then fill it with
        'the entire contents of the field
        ReDim Arr(OleField.ActualSize)
        Arr() = OleField.GetChunk(OleField.ActualSize)

        'Copy the first 19 bytes into a variable
        'of the OBJECTHEADER user defined type.
        CopyMemory ObjHeader, Arr(0), 19

        'Determine where the Access Header ends.
        ObjectOffset = ObjHeader.HeaderSize + 1

        'Grab enough bytes after the OLE header to get the bitmap header.
        Buffer = ""
        For i = ObjectOffset To ObjectOffset + 512
            Buffer = Buffer & Chr(Arr(i))
        Next i

        'Make sure the class of the object is a Paint Brush object
        If Mid(Buffer, 12, 6) = "PBrush" Then
            BitmapHeaderOffset = InStr(Buffer, "BM")
            If BitmapHeaderOffset > 0 Then

                'Calculate the beginning of the bitmap
                BitmapOffset = ObjectOffset + BitmapHeaderOffset - 1

                'Move the bitmap into its own array
                ReDim ArrBmp(UBound(Arr) - BitmapOffset)
                CopyMemory ArrBmp(0), Arr(BitmapOffset), UBound(Arr) -
                 BitmapOffset + 1

                'Return the bitmap
                DisplayBitmap = ArrBmp
            End If
        End If
      End Function



Rename the Project by selecting the Project menu, and clicking on "Project1 Properties" and type your new
name in the "Project Name" field. This example assumes that you named the project "MyProject" and will
refer to that name in future steps.


Make the project Apartment Model Threaded by selecting the "Unattended Execution" check box. Click OK.


Rename the Class in the Property Pane. This example assumes that you named the class "MyClass" and refers
to that name in future steps.


Compile the DLL by clicking the File menu and selecting "Make MyProject.dll."


Create an ASP page named "bitmap.asp" that contains the following code:

      <%@ LANGUAGE="VBSCRIPT" %>
      <%
      '   You need to set up a System DSN named 'NWind' that points to
      '   the Northwind.mdb database
      Set DataConn = Server.CreateObject("ADODB.Connection")
      DataConn.Open "DSN=NWind", "admin", ""
      Set cmdTemp = Server.CreateObject("ADODB.Command")
      Set RS = Server.CreateObject("ADODB.Recordset")
      cmdTemp.CommandText = "SELECT Photo FROM Employees
        WHERE EmployeeID = 1"
      cmdTemp.CommandType = 1
      Set cmdTemp.ActiveConnection = DataConn
      RS.Open cmdTemp, , 0, 1
      Response.ContentType = "image/bmp"
      Set Bitmap = Server.CreateObject("MyProject.MyClass")
      Response.BinaryWrite Bitmap.DisplayBitmap(RS("Photo"))
      RS.Close
      %>



Create an HTML page named "BitmapTest.htm" that contains the following code:

      <HTML>
      <HEAD>
      <TITLE>Bitmap Test</TITLE>
      </HEAD>
      <BODY>
      <HR>
      <img src="Bitmap.asp">
      <HR>
      </BODY>
      </HTML>



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一区二区三区日韩精品 | 一级做a爰性色毛片免费 | 国产美女爽到喷白浆的 | 黄色大片网站在线观看 | 国产好片无限资源 | 91精品国产一区二区三区动漫 | 成人国产免费观看 | 911色_911色sss主站色播 | 亚洲精品久久久久久久久久 | 久久精品国产精品亚洲 | 一级成人欧美一区在线观看 | videos真实高潮xxxx | 久久99国产精品视频 | 久久久www视频 | 国产精品午夜一区 | 精品久久久久久久久久久久包黑料 | 羞羞的视频 | 成人免费在线播放 | 国产成人高清在线 | 思思久而久而蕉人 | 成人国产免费观看 | chinesehd天美原创xxxx | 久色视频网站 | 麻豆一二区 | 最新久久免费视频 | 成人午夜在线播放 | 一级毛片免费大片 | 久草视频在线资源 | wwwxxx视频| 在线a毛片免费视频观看 | 日韩视频一 | 水卜樱一区二区av | 国产精品一区在线观看 | av亚洲在线观看 | 国产亚洲精品成人 | 久久久久久免费 | 国产papa| 午夜a狂野欧美一区二区 | 国产流白浆高潮在线观看 | 黄色一级片毛片 | 看全色黄大色黄大片女图片 |