我使用mantra指纹扫描仪来获取指纹数据,我想将指纹数据存储在mysql中。后来我想与其他人进行比较。我在使用mysql存储数据方面遇到了问题。
这是扫描仪提供指纹数据后的代码。
private void StartSyncCapture(){
runOnUiThread(new Thread(new Runnable() {
@Override
public void run() {
try {
FingerData fingerData = new FingerData();
int ret = mfs100.AutoCapture(fingerData, timeout, false,
true);
if (ret != 0) {
Toast.makeText(getApplicationContext(), "StartSyncCapture " + mfs100.GetErrorMsg(ret), Toast.LENGTH_SHORT).show();
} else {
if (fingerData.Quality() >= minQuality) {
final Bitmap bitmap = BitmapFactory.decodeByteArray(
fingerData.FingerImage(), 0,
fingerData.FingerImage().length);
imgFinger.post(new Runnable() {
@Override
public void run() {
imgFinger.setImageBitmap(bitmap);
imgFinger.refreshDrawableState();
}
});
Toast.makeText(getApplicationContext(), "Capture Success", Toast.LENGTH_SHORT).show();
String log = "\nQuality: " + fingerData.Quality()
+ "\nNFIQ: " + fingerData.Nfiq()
+ "\nWSQ Compress Ratio: "
+ fingerData.WSQCompressRatio()
+ "\nImage Dimensions (inch): "
+ fingerData.InWidth() + "\" X "
+ fingerData.InHeight() + "\""
+ "\nImage Area (inch): " + fingerData.InArea()
+ "\"" + "\nResolution (dpi/ppi): "
+ fingerData.Resolution() + "\nGray Scale: "
+ fingerData.GrayScale() + "\nBits Per Pixal: "
+ fingerData.Bpp() + "\nWSQ Info: "
+ fingerData.WSQInfo();
Toast.makeText(getApplicationContext(), "fingerData.Quality()" + fingerData.Quality() + "StartSyncCapture is " + fingerData.ISOTemplate().length, Toast.LENGTH_SHORT).show();
mFingerData = fingerData;
//////////////////// Extract ISO Image
int dataLen = 0;
byte[] tempData = new byte[(mfs100.GetDeviceInfo().Width() * mfs100.GetDeviceInfo().Height()) + 1078];
byte[] isoImage = null;
dataLen = mfs100.ExtractISOImage(fingerData.RawData(), tempData);
if (dataLen <= 0) {
if (dataLen == 0) {
Toast.makeText(getApplicationContext(), "Failed to extract ISO Image", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), mfs100.GetErrorMsg(dataLen), Toast.LENGTH_SHORT).show();
}
return;
} else {
isoImage = new byte[dataLen];
System.arraycopy(tempData, 0, isoImage, 0, dataLen);
mISOImage = new byte[dataLen];
System.arraycopy(tempData, 0, mISOImage, 0, dataLen);
}
} else {
Toast.makeText(getApplicationContext(), "Please try again", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception ex) {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
}
}
}));
}
答案 0 :(得分:0)
指纹扫描仪只返回图像,既可以将位图存储到数据库中,也可以将图像保存到本地存储中,并将图像路径保存到数据库中。
您可以使用外部库将图像转换为细节,并注册并验证为:
答案 1 :(得分:0)
具有不同类型的图像,如位图,iso,wsq等。 通常,从照片查看器中只能预览位图图像。但是如果你想预览iso图像(19794-4)那么你需要iso查看器,如果你想预览wsq图像,那么你需要使用wsq viewer。
关于将图像存储到数据库中,需要使用blob数据类型,并且需要将位图图像转换为字节数组,然后必须存储到数据库中。
但请记住,如果您想使用存储的图像进行验证,则需要将ISO模板(19794-2)存储到数据库中。
获取ISO模板(19794-2),你必须使用SDK的mfs100.ExtractISOTemplate函数。
答案 2 :(得分:0)
也是在Mantra设备中存储和重复使用指纹数据的最佳解决方案,因此将ISO模板保存到base64字符串并将 base64 字符串存储在数据库中,并从数据库中获取指纹数据,从而将文件从base64创建到ISO寺庙