كيفية استرداد الصورة النقطية من الوصول وعرضها في صفحة ويب

ملخص

يوضح هذا المقال كيفية استخراج الصور النقطية في Microsoft Access 97 Nwind.mdb قاعدة البيانات وعرضها من خلال مستعرض ويب باستخدام صفحات الملقم النشطة (ASP) بالمثال. من أجل إنجاز هذه المهمة، ActiveX DLL يجب إنشاء تلك الشرائط رؤوس OLE والوصول من الحقل. يوضح هذا المقال كيفية إنشاء ActiveX DLL وكيفية تنفيذه.

مزيد من المعلومات

تحذير: أي استخدام للتعليمات البرمجية المتوفرة في هذا هو المادة على المخاطر الخاصة الخاصة بك. توفر 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. ضع التعليمات البرمجية التالية في المقطع (عام) (التعريفات) من الوحدة النمطية 1. بيان النشاط التجاري:

          ' 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. ضع التعليمات البرمجية التالية في المقطع (عام) (التعريفات) من الفئة 1. 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. إعادة تسمية المشروع بتحديد القائمة مشروع، والنقر فوق "خصائص مشروع 1" واكتب الاسم الجديد في الحقل "اسم المشروع". هذا المثال يفترض أن اسم المشروع "MyProject" وسيشير إلى هذا الاسم في الخطوات المقبلة.

  7. حدد خانة الاختيار "تنفيذ غير المراقب". انقر فوق موافق.

  8. إعادة تسمية الفئة في جزء الخاصية. يفترض هذا المثال أن اسم الفئة "MyClass" وتشير إلى هذا الاسم في الخطوات المقبلة.

  9. ترجمة DLL بالنقر فوق القائمة " ملف " وتحديد "أن MyProject.dll".

  10. إنشاء صفحة ASP المسمى "bitmap.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. إنشاء صفحة HTML المسمى "BitmapTest.htm" الذي يحتوي على التعليمات البرمجية التالية:

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

المراجع

لمزيد من المعلومات، الرجاء مراجعة المقالة التالية في "قاعدة المعارف ل Microsoft":

173308 كيفية عرض الصور المخزنة في حقل النقطة

أرتيسيس قاعدة المعارف أحدث ومعلومات دعم أخرى على مواقع ويب وصفحات الملقم النشطة، راجع الصفحة التالية على موقع الدعم التقني ل Microsoft:

http://support.microsoft.com/search/default.aspx?qu=vinterdev

هل تحتاج إلى مزيد من المساعدة؟

توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Microsoft Insider

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة الترجمة؟

ما الذي أثّر في تجربتك؟

هل لديك أي ملاحظات إضافية؟ (اختياري)

نشكرك على ملاحظاتك!

×