当前位置:编程学习 > C#/ASP.NET >>

有熟悉指纹开发系统的么 存储图片的问题 前辈们进来看 谢谢了

这个是毕业设计要做的 求教过很多次 再次感谢了 但是都看不明白 最好能指点细致些 我下载吧整个程序都发过来 请高手前辈帮忙解决图片问题 要求是把指纹获取的图片保存到数据库里面 然后验证的时候再从数据库中提取出来然后对比 程序有特殊的算法 他把图片是存放的本地C盘中了 但是老师要求放到数据里面 这点难倒我了 sdk也给了demo程序了 但是里面没有数据这方面的 请高手帮帮我 是在是不清楚怎么办了
下面程序的 请高手帮我把数据库这块解决了 真不好意思 麻烦大家了
  Dim FMatchType As Integer
    Dim isConnected As Boolean
    Dim fpcHandle As Integer
    Dim FID As Integer
    Dim RegTemplate As Object
    Dim VerTemplate As Object
    Dim tempstr As String


    Private Sub AxZKFPEngX1_OnFingerTouching(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxZKFPEngX1.OnFingerTouching

    End Sub

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If AxZKFPEngX1.InitEngine() = 0 Then

            StatusBar1.Panels(0).Text = "Sensor Connected"
            TextBox1.Text = AxZKFPEngX1.SensorCount.ToString()
            TextBox2.Text = AxZKFPEngX1.SensorIndex.ToString()
            TextBox3.Text = AxZKFPEngX1.SensorSN
            TextBox4.Text = AxZKFPEngX1.ImageWidth.ToString()
            TextBox5.Text = AxZKFPEngX1.ImageHeight.ToString()
            FMatchType = 0
            isConnected = True

        Else

            StatusBar1.Panels(0).Text = "Sensor Disconneted"
            TextBox1.Text = ""
            TextBox2.Text = ""
            TextBox3.Text = ""
            isConnected = False
        End If

    End Sub

    Private Sub AxZKFPEngX1_OnImageReceived(ByVal sender As Object, ByVal e As AxZKFPEngXControl.IZKFPEngXEvents_OnImageReceivedEvent) Handles AxZKFPEngX1.OnImageReceived
        Dim canvas As Graphics = PictureBox1.CreateGraphics
        Dim dc As IntPtr = canvas.GetHdc()
        AxZKFPEngX1.PrintImageAt(dc.ToInt32, 0, 0, PictureBox1.Width, PictureBox1.Height)
        canvas.Dispose()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles    Button2.Click
        If Not isConnected Then Return
        If RadioButton1.Checked Then
        AxZKFPEngX1.SaveBitmap("c:\fingerprint.bmp")
        Else
        AxZKFPEngX1.SaveJPG("c:\fingerprint.jpg")
        End If
        MessageBox.Show("保存成功", "Warn", MessageBoxButtons.OK)
             
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If AxZKFPEngX1.IsRegister Then AxZKFPEngX1.CancelEnroll()
        AxZKFPEngX1.BeginEnroll()

    End Sub

    Private Sub AxZKFPEngX1_OnEnroll(ByVal sender As Object, ByVal e As AxZKFPEngXControl.IZKFPEngXEvents_OnEnrollEvent) Handles AxZKFPEngX1.OnEnroll
        If e.actionResult Then

            FID = FID + 1
            RegTemplate = e.aTemplate
            AxZKFPEngX1.AddRegTemplateToFPCacheDB(fpcHandle, FID, e.aTemplate)
            TextBox6.Text = FID.ToString()
            MessageBox.Show("Register Success", "Warn", MessageBoxButtons.OK)

        End If

    End Sub

    Private Sub AxZKFPEngX1_OnCapture(ByVal sender As Object, ByVal e As AxZKFPEngXControl.IZKFPEngXEvents_OnCaptureEvent) Handles AxZKFPEngX1.OnCapture
        If e.actionResult Then

            VerTemplate = e.aTemplate
            Dim score As Integer = 0
            Dim processedFPNumber As Integer

            Dim ID As Integer

            AxZKFPEngX1.OneToOneThreshold = Int32.Parse(TextBox7.Text)
            AxZKFPEngX1.Threshold = Int32.Parse(TextBox5.Text)
            If FMatchType = 1 Then

                Dim b As Boolean

                If AxZKFPEngX1.VerFinger(RegTemplate, e.aTemplate, False, b) Then

                    tempstr = "Verify Success! FingerNum is " + FID.ToString()
                    MessageBox.Show(tempstr, "Warn", MessageBoxButtons.OK)

                Else
                    MessageBox.Show("Verify failed", "Warn", MessageBoxButtons.OK)
                End If
            End If
            If FMatchType = 2 Then


                ID = AxZKFPEngX1.IdentificationInFPCacheDB(fpcHandle, e.aTemplate, score, processedFPNumber)
                tempstr = "Verify Success! FingerNum is " + ID.ToString()
                MessageBox.Show(tempstr, "Warn", MessageBoxButtons.OK)




            End If
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If AxZKFPEngX1.IsRegister Then AxZKFPEngX1.CancelEnroll()
        AxZKFPEngX1.BeginCapture()
        FMatchType = 1

    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If AxZKFPEngX1.IsRegister Then AxZKFPEngX1.CancelEnroll()
        AxZKFPEngX1.BeginCapture()
        FMatchType = 2

    End Sub

    Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        AxZKFPEngX1.FreeFPCacheDB(fpcHandle)

    End Sub --------------------编程问答-------------------- 下面这个事说明文档是程序说明给的 但是完全看不懂 要是高手能帮我用vb代码说名下做好 
求教了

数据库中指纹模板写入和读出

SDK中指纹模板是以Vairant变量的方式保存和传递,其存储的是一维二进制字节数组,不能像字符串一样直接用SQL语句写入和读出,有下面处理方法:
1、 EncodeTemplate和DecodeTemplate方法可以在Variant变量和字符串变量之间互相进行BASE64编码转换,转换为字符串后,模板长度会增加大约1/3。
2、 在OnEnroll事件和OnCapture事件中直接调用GetTemplateAsString方法得到相应字符串形式的登记模板和比对模板。
3、直接操作Variant变量,下面是操作示例:
Delphi, CB:
procedure TFPProcess.SaveFPData(AQuery: TADOQuery; AFingerID: Integer; AFPData: OleVariant);
var
  pData: PChar;
begin
  with AQuery do begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
    Open;
    if IsEmpty then
      Append
    else
      Edit;
    FieldByName('FingerID').Value := AFingerID;
    //保存指纹模板
    with TBlobStream(CreateBlobStream(FieldByName('Template'), bmWrite)) do begin
      pData := VarArrayLock(AFPData);
      try
        Write(pData^, VarArrayHighBound(AFPData, 1) - VarArrayLowBound(AFPData, 1) + 1);
      finally
        VarArrayUnlock(AFPData);
      end;
      Free;
    end;
    Post;
    Close;
  end;
end;
procedure TFPProcess.GetFPData(AQuery: TADOQuery; AFingerID: Integer; var AFPData: OleVariant);
var
  pData: PChar;
begin
  with AQuery do begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
    Open;
    //读取数据
    if not IsEmpty then
       with TBlobStream(CreateBlobStream(FieldByName('Template'), bmRead)) do begin
         AFPData := VarArrayCreate([0, Size + 1], varByte);
         pData := VarArrayLock(AFPData);
         try
           Read(pData^, Size);
         finally
           VarArrayUnlock(AFPData);
         end;
         Free;
       end;
    Close;
  end;
end;

--------------------编程问答-------------------- 我进错房间了
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,