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

zhaowei_chinese 2009-05-06 07:34:28
这个是毕业设计要做的 求教过很多次 再次感谢了 但是都看不明白 最好能指点细致些 我下载吧整个程序都发过来 请高手前辈帮忙解决图片问题 要求是把指纹获取的图片保存到数据库里面 然后验证的时候再从数据库中提取出来然后对比 程序有特殊的算法 他把图片是存放的本地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;

...全文
219 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧