如何在数据库android中存储指纹数据

时间:2017-07-21 08:38:51

标签: android mysql fingerprint

我使用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();
            }
        }
    }));
}

3 个答案:

答案 0 :(得分:0)

指纹扫描仪只返回图像,既可以将位图存储到数据库中,也可以将图像保存到本地存储中,并将图像路径保存到数据库中。

您可以使用外部库将图像转换为细节,并注册并验证为:

http://www.nist.gov/itl/iad/ig/nbis.cfm

http://www.neurotechnology.com/verifinger.html

答案 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寺庙

检查此网址 Base 64 encode and decode example code