Access에서 비트맵을 검색 하 고 웹 페이지에 표시 하는 방법


요약


이 문서에서는 예제 Microsoft Access 97 Nwind.mdb 데이터베이스에서 비트맵 사진 추출 하 고 Active Server Pages (ASP)를 사용 하 여 웹 브라우저에서 볼. 이 작업을 수행 하기 위해는 ActiveX DLL 생성 해야 해당 구획 액세스 및 OLE 헤더 필드. 이 문서에서는이 ActiveX DLL을 만드는 방법과 구현 하는 방법을 보여 줍니다.

자세한 내용


경고:이 문서 IS 귀하 자신의 위험에 사용 하면 코드에서 제공 합니다. Microsoft는 어떠한 보증도 명시적 또는 묵시적된 보증, 특정 목적에의 적합성에 제한 되지 않음 보증 없이 "있는 그대로"이이 코드를 제공 합니다.


이 문서는 Visual Basic 사용 하 여 OLE 개체 필드에 저장 된 비트맵을 검색 하는 방법을 보여줍니다. OLE 개체 저장소 정의 설명 되어 있지 않습니다 때문에 다음 코드는 개체의 OLE 머리글 그래픽 시작 함께 일관 된 문자를 검색 합니다. 이 메서드는 모든 상황에서 작동 하지 않습니다.


Internet Explorer 3.0 트루 컬러 비트맵을 표시할 수 없다는 점에 주의.입니다 따라서 Access 데이터베이스에 저장 된 비트맵 256 색 보다 높은 있어야 합니다.

해당 사진 추출 단계별 예제

  1. Visual Basic 새 프로젝트 만들기 및는 ActiveX DLL 프로젝트를 만듭니다.
  2. 프로젝트 메뉴에서 참조를 선택 하 여 ActiveX 데이터 개체 (ADO)에 대 한 참조를 추가 합니다. Microsoft OLE DB ActiveX 데이터 개체 1.0 "라이브러리"를 선택 하 고 확인을 클릭 합니다.
  3. 프로젝트 메뉴를 선택 하 고 모듈 추가 클릭 하 여 프로젝트에 새 모듈을 추가 합니다. 모듈을 선택 하 고 열기를 클릭 합니다.
  4. 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
  5. 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
  6. 프로젝트 메뉴를 선택 하 고 "Project1 속성"을 클릭 하 여 프로젝트 바꾸고 "프로젝트 이름" 필드에 새 이름을 입력 합니다. 이 예제에서는 사용자가 명명 된 프로젝트 "MyProject"을은 이후 단계에서 해당 이름을 참조 합니다.
  7. "무인 실행" 확인란을 선택 합니다. 확인을 클릭합니다.
  8. 속성 창에 클래스를 이름을 바꿉니다. 이 예제에서는 클래스 "MyClass" 라는 고 이후 단계에서 해당 이름을 참조 하는 가정 합니다.
  9. 파일 메뉴를 클릭 하 여 "MyProject.dll 확인"을 선택 하 고 DLL을 컴파일하십시오.
  10. 다음 코드를 포함 하는 "bitmap.asp" 라는 ASP 페이지를 만듭니다.
          <%@ 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
    %>
  11. 다음 코드를 포함 하는 "BitmapTest.htm" 이라는 HTML 페이지를 만듭니다.
          <HTML>
    <HEAD>
    <TITLE>Bitmap Test</TITLE>
    </HEAD>
    <BODY>
    <HR>
    <img src="Bitmap.asp">
    <HR>
    </BODY>
    </HTML>

참조


자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조 하십시오.

173308 표시 이미지 BLOB 필드에 저장 하는 방법

최신 기술 자료 artices 및 기타 지원 정보를 Visual InterDev 및 Active Server Pages, Microsoft 기술 지원 사이트에서 다음 페이지를 참조.