Exemplo n.º 1
0
        private void SegmentSaveImageCaptureProcess(IntPtr imageData, int imageWidth, int imageHeight, int numOfFingers, RSSlapInfoArray slapInfo, IntPtr[] ImageBuffer, int[] ImageWidth, int[] ImageHeight)
        {
            #region SegmentSaveImageCaptureProcess
            string bmp;
            string wsq;
            int    dedo = 0;
            int    result;
            int    n             = 0;
            byte[] huella        = null;
            byte[] template      = null;
            byte[] archivoWSQMem = null;
            int[]  dedoPerdido   = new int[] { 0, 0, 0, 0 };
            int[]  pulgarPerdido = new int[] { 0, 0 };
            string palma;

            try
            {
                #region genera arreglo para identificar dedo sin huella
                switch (param[0])
                {
                case "3":         //PULGARES
                    for (int i = 0; i < 2; i++)
                    {
                        if (clbPulgar.GetItemChecked(i))
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 0;
                                break;

                            case 1:
                                dedoPerdido[1] = 0;
                                break;
                                break;
                            }
                        }
                        else
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 6;
                                break;

                            case 1:
                                dedoPerdido[1] = 1;
                                break;
                            }
                        }
                    }
                    break;

                case "4":        //4 DEDOS MANO IZQUIERDA
                    for (int i = 0; i < 4; i++)
                    {
                        if (clbDedo.GetItemChecked(i))
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 0;
                                break;

                            case 1:
                                dedoPerdido[1] = 0;
                                break;

                            case 2:
                                dedoPerdido[2] = 0;
                                break;

                            case 3:
                                dedoPerdido[3] = 0;
                                break;
                            }
                        }
                        else
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 10;
                                break;

                            case 1:
                                dedoPerdido[1] = 9;
                                break;

                            case 2:
                                dedoPerdido[2] = 8;
                                break;

                            case 3:
                                dedoPerdido[3] = 7;
                                break;
                            }
                        }
                    }
                    break;

                case "5":        //4 DEDOS MANO DERECHA
                    for (int i = 0; i < 4; i++)
                    {
                        if (clbDedo.GetItemChecked(i))
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[3] = 0;
                                break;

                            case 1:
                                dedoPerdido[2] = 0;
                                break;

                            case 2:
                                dedoPerdido[1] = 0;
                                break;

                            case 3:
                                dedoPerdido[0] = 0;
                                break;
                            }
                        }
                        else
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[3] = 5;
                                break;

                            case 1:
                                dedoPerdido[2] = 4;
                                break;

                            case 2:
                                dedoPerdido[1] = 3;
                                break;

                            case 3:
                                dedoPerdido[0] = 2;
                                break;
                            }
                        }
                    }
                    break;

                default:
                    break;
                }
                #endregion

                #region codigo comentado

                //GENERA BMP DE LAS 4 HUELLAS
                //palma = param[1] + "palma_" + param[0] + ".bmp";
                //RS_SDK.RS_SaveBitmap(imageData, imageWidth, imageHeight, palma);
                //if (m_result != RS_SDK.RS_SUCCESS)
                //{
                //    RS_SDK.RS_GetErrString(m_result, ref m_errorMsg);
                //    MsgPanel.Text = m_errorMsg;
                //}

                #endregion

                //me conecto a la base de datos
                conn = new OracleConnection(Conexion(param[3]));
                conn.Open();

                //ciclo que recorre el arreglo de huellas
                for (int i = 0; i < numOfFingers; i++)
                {
                    //identifico el id del dedo que se le asignara a la huella
                    dedo = 0;
                    while (dedo == 0)
                    {
                        dedo = dedoPerdido[n];
                        n++;
                    }

                    //genero el nombre de los archivos y su ruta
                    bmp = param[1] + param[2] + "_" + dedo + ".bmp";
                    wsq = param[1] + param[2] + "_" + dedo + ".wsq";

                    //genero imagen de la huella
                    result = RS_SDK.RS_SaveBitmap(ImageBuffer[i], ImageWidth[i], ImageHeight[i], bmp);
                    //cargo ewn memoria el archivo de la huella
                    FileStream fs = new FileStream(bmp, FileMode.Open, FileAccess.Read);
                    huella = new byte[fs.Length];
                    fs.Read(huella, 0, System.Convert.ToInt32(fs.Length));
                    fs.Close();

                    #region CODIGO DE PREUEBAS
                    //result = RealScanExtendSDK.RSE_SaveRAW(ImageBuffer[i], ImageWidth[i], ImageHeight[i], "C:\\Temp\\huellas\\huella."+ "_" + dedo +"dat");
                    //creo el template...
                    //template = new byte[ImageWidth[i] * ImageHeight[i]];
                    //Marshal.Copy(ImageBuffer[i], template, 0, ImageWidth[i] * ImageHeight[i]);
                    #endregion


                    //genero el archivo wsq
                    RealScanExtendSDK.RSE_CompressWSQ(bmp, null, 3, wsq);
                    //cargo en memoria el archivo wsq
                    FileStream archivoWSQ = new FileStream(wsq, FileMode.Open, FileAccess.Read);
                    archivoWSQMem = new byte[archivoWSQ.Length];
                    archivoWSQ.Read(archivoWSQMem, 0, System.Convert.ToInt32(archivoWSQ.Length));
                    archivoWSQ.Close();

                    //metodo que graba el registro en la base de datos
                    RegistraHuella(dedo, huella, template, archivoWSQMem);

                    //elimino los archivos del equipo
                    File.Delete(bmp);
                    File.Delete(wsq);
                }

                conn.Close();
                conn.Dispose();
            }
            catch (TargetInvocationException ex)
            {
                MsgPanel.Text = ex.Message;
                throw;
            }
            #endregion
        }
Exemplo n.º 2
0
        private void SegmentSaveImageCaptureProcess(IntPtr imageData, int imageWidth, int imageHeight, int numOfFingers, RSSlapInfoArray slapInfo, IntPtr[] ImageBuffer, int[] ImageWidth, int[] ImageHeight)
        {
            #region SegmentSaveImageCaptureProcess
            SaveFileDialog saveDialog = new SaveFileDialog();
            saveDialog.InitialDirectory = ".:\\";
            saveDialog.FilterIndex      = 1;
            string bmp;
            string wsq;
            int    result;
            byte[] huella        = null;
            byte[] wsqBuffer     = null;
            int    dedo          = 0;
            int    tamano        = 0;
            byte[] template      = null;
            int[]  dedoPerdido   = new int[] { 0, 0, 0, 0 };
            int[]  pulgarPerdido = new int[] { 0, 0 };
            int    n             = 0;
            try
            {
                #region genera arreglo para identificar dedo sin huella
                switch (param[0])
                {
                case "3":         //PULGARES
                    for (int i = 0; i < 2; i++)
                    {
                        if (clbPulgar.GetItemChecked(i))
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 0;
                                break;

                            case 1:
                                dedoPerdido[1] = 0;
                                break;
                                break;
                            }
                        }
                        else
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 6;
                                break;

                            case 1:
                                dedoPerdido[1] = 1;
                                break;
                            }
                        }
                    }
                    break;

                case "4":        //4 DEDOS MANO IZQUIERDA
                    for (int i = 0; i < 4; i++)
                    {
                        if (clbDedo.GetItemChecked(i))
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 0;
                                break;

                            case 1:
                                dedoPerdido[1] = 0;
                                break;

                            case 2:
                                dedoPerdido[2] = 0;
                                break;

                            case 3:
                                dedoPerdido[3] = 0;
                                break;
                            }
                        }
                        else
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[0] = 10;
                                break;

                            case 1:
                                dedoPerdido[1] = 9;
                                break;

                            case 2:
                                dedoPerdido[2] = 8;
                                break;

                            case 3:
                                dedoPerdido[3] = 7;
                                break;
                            }
                        }
                    }
                    break;

                case "5":        //4 DEDOS MANO DERECHA
                    for (int i = 0; i < 4; i++)
                    {
                        if (clbDedo.GetItemChecked(i))
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[3] = 0;
                                break;

                            case 1:
                                dedoPerdido[2] = 0;
                                break;

                            case 2:
                                dedoPerdido[1] = 0;
                                break;

                            case 3:
                                dedoPerdido[0] = 0;
                                break;
                            }
                        }
                        else
                        {
                            switch (i)
                            {
                            case 0:
                                dedoPerdido[3] = 5;
                                break;

                            case 1:
                                dedoPerdido[2] = 4;
                                break;

                            case 2:
                                dedoPerdido[1] = 3;
                                break;

                            case 3:
                                dedoPerdido[0] = 2;
                                break;
                            }
                        }
                    }
                    break;

                default:
                    break;
                }
                #endregion


                //RS_SDK.RS_SaveBitmap(imageData, imageWidth, imageHeight, param[1] + param[2] + ".bmp");
                //if (m_result != RS_SDK.RS_SUCCESS)
                //{
                //    RS_SDK.RS_GetErrString(m_result, ref m_errorMsg);
                //    MsgPanel.Text = m_errorMsg;
                //}

                conn = new OracleConnection(Conexion(param[3]));
                conn.Open();

                for (int i = 0; i < numOfFingers; i++)
                {
                    dedo = 0;
                    while (dedo == 0)
                    {
                        dedo = dedoPerdido[n];
                        n++;
                    }

                    bmp = param[1] + param[2] + "_" + dedo + ".bmp";
                    wsq = param[1] + param[2] + "_" + dedo + ".wsq";


                    result = RS_SDK.RS_SaveBitmap(ImageBuffer[i], ImageWidth[i], ImageHeight[i], bmp);
                    //result = RS_SDK.RS_EncodeWSQ(ImageBuffer[i], ImageWidth[i], ImageHeight[i], 0.75, ref wsqBuffer, ref tamano);
                    //result = RealScanExtendSDK.RSE_CompressWSQ(bmp, null, 0.75, wsq);

                    FileStream fs = new FileStream(bmp, FileMode.Open, FileAccess.Read);
                    huella = new byte[fs.Length];
                    fs.Read(huella, 0, System.Convert.ToInt32(fs.Length));
                    fs.Close();

                    //result = RS_SDK.RS_SaveBitmapMem(ImageBuffer[i], ImageWidth[i], ImageHeight[i], huella);

                    template = new byte[ImageWidth[i] * ImageHeight[i]];
                    Marshal.Copy(ImageBuffer[i], template, 0, ImageWidth[i] * ImageHeight[i]);

                    RegistraHuella(dedo, huella, template);

                    File.Delete(bmp);

                    //result = RealScanExtendSDK.RSE_CompressWSQ(bmp, null, 2.25, wsq);
                    //result = RealScanExtendSDK.RSE_CompressWSQBuffer(bmp, null, 0.75, memwsq, tamano);

                    if (m_result != RS_SDK.RS_SUCCESS)
                    {
                        RS_SDK.RS_GetErrString(m_result, ref m_errorMsg);
                        MsgPanel.Text = m_errorMsg;
                    }
                }

                conn.Close();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                MsgPanel.Text = ex.Message;
            }
            #endregion
        }