예제 #1
0
    public int prSaveMRZImage()
    {
        try
        {
            if (_doc.IsValid())
            {
                /* Saving the MRZ image */
                gxImage img = _doc.FieldImage((int)(PR_DOCFIELD.PR_DF_MRZ1 & PR_DOCFIELD.PR_DF_MRZ2));
                if (img.IsValid())
                {
                    img.Save("mrz.jpg", (int)GX_IMGFILEFORMATS.GX_JPEG);
                }

                //_doc.Free();
                //_doc = null;
                //_pr.ResetDocument();
            }
        }
        catch (Exception e)
        {
            _errorMessage = e.Message + " --- prSaveMRZImage()";
            return(1305);
        }

        return(0);
    }
예제 #2
0
        private void scan_verso()
        {
            //PassportReader pr = new PassportReader();
            try
            {
                //pr.UseDevice(0, (int)PR_USAGEMODE.PR_UMODE_FULL_CONTROL);
                pr.Capture();


                if (File.Exists(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "verso.jpeg"))
                {
                    File.Delete(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "verso.jpeg");
                }
                pr.SaveImage(0, (int)PR_LIGHT.PR_LIGHT_WHITE, (int)PR_IMAGE_TYPE.PR_IT_DOCUMENT, Environment.ExpandEnvironmentVariables("%TEMP%/") + "verso.jpeg", (int)GX_IMGFILEFORMATS.GX_JPEG);

                prDoc   doc = pr.Recognize(0);
                gxImage img = doc.FieldImage((int)PR_DOCFIELD.PR_DF_VIZ_FACE);
                if (img != null)
                {
                    if (File.Exists(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "PhotoIdentite.jpeg"))
                    {
                        File.Delete(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "PhotoIdentite.jpeg");
                    }
                    img.Save(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "PhotoIdentite.jpeg", (int)GX_IMGFILEFORMATS.GX_JPEG);
                }

                string temp;
                temp = doc.Field((int)PR_DOCFIELD.PR_DF_MRZ1) + doc.Field((int)PR_DOCFIELD.PR_DF_MRZ2) + doc.Field((int)PR_DOCFIELD.PR_DF_MRZ3);
                if (!temp.Equals(""))
                {
                    MRZ = temp;
                }
                else
                {
                    Program.LogFich.Info("[ScannerPiece] pas de piste MRZ sur le verso");
                }
            }
            catch (Exception ex)
            {
                Program.LogFich.Error("[ScannerPiece] n'a pas pu lire le verso du document : " + ex.ToString());
            }
            finally
            {
                //pr.CloseDevice();
                //pr.Close();
                //pr.Dispose();
                //pr = null;
            }
        }
        /// <summary>
        /// Chup hinh nhan dang
        /// </summary>
        /// <param name="pTransactionID"></param>
        /// <param name="pLaneID"></param>
        public int CaptureImage(string pTransactionID, string pLaneID)
        {
            int retValue = 0;

            try
            {
                // Unlock all locked frames if there is any
                //mFxCamera.UnlockFrames((ushort)FXCAM_UNLOCK_FLAGS.FXCAM_UNLOCK_RELEASE_ALL, 0, 0);

                // Start capture
                mFxCamera.StartCapture();

                //Waiting for the end of the camera initialization
                Thread.Sleep(DELAY_DURATION);

                // Wait for valid frame
                //mFxCamera.GetCaptureInfo();
                int cap_frameix = mFxCamera.GetPropertyInt("captureinfo/newestframeix");

                gxImage image = new gxImage();
                for (int i = 1; i <= NumPictures; i++)
                {
                    // Save image at local folder
                    mFxCamera.GetFrame((int)FXCAM_GETFRAME_FLAGS.FXCAM_GETFRAME_NEWEST, 0, image);
                    if (image.GetPixelFormat() != (int)GX_PIXELFORMATS.GX_GRAY)
                    {
                        image.Convert((int)GX_PIXELFORMATS.GX_RGB);     // color image
                    }
                    image.Save(DefaultFileName, (int)GX_IMGFILEFORMATS.GX_JPEG);

                    ///TEST LOG
                    //WriteLogFile(this.GetType() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Start save image at server");

                    // Save image at server
                    string   pFileName = pTransactionID + "_" + pLaneID + "_" + i.ToString();
                    string   subfolder = string.Empty;
                    string[] temp      = pFileName.Split('_');
                    string   path      = string.Empty;
                    if (System.IO.Directory.Exists(RootFolder))
                    {
                        path  = RootFolder;
                        path += @"\" + pFileName.Substring(0, 10);
                        path += @"\" + temp[1];//004
                        if (!System.IO.Directory.Exists(path))
                        {
                            //Neu thu muc chua ton tai->tao thu muc do'
                            Directory.CreateDirectory(path);
                        }

                        ///TEST LOG
                        //WriteLogFile(this.GetType() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Check exists recog folder");

                        if (System.IO.Directory.Exists(path))
                        {
                            using (Image tempPic = Image.FromFile(DefaultFileName)) //chỗ này nếu ko chụp dc hình thì phải tạo 1 ảnh tạm
                            {
                                string pFullPath = path + @"\" + pFileName + ".jpg";
                                tempPic.Save(pFullPath);
                            }
                        }
                        else
                        {
                            WriteLogFile(this.GetType() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Cannot create folder: " + path);
                            return(-1); //Khong copy hinh len server duoc
                        }
                    }
                    else
                    {
                        WriteLogFile(this.GetType() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Folder " + RootFolder + " doesn't exist");
                    }
                }
                // Stop capture
                mFxCamera.StopCapture();

                ///TEST LOG
                //WriteLogFile(this.GetType() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Stop Capture");

                retValue = 1;
            }
            catch (Exception ex)
            {
                WriteLogFile(this.GetType() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, ex.Message);
            }

            return(retValue);
        }
예제 #4
0
        public string scanner_piece()
        {
            prDoc doc;

            try
            {
                //if (!pr.IsCalibrated((int)PR_WINDOW_ID.PR_OW_DEFAULT))
                //    pr.Calibrate((int)PR_WINDOW_ID.PR_OW_DEFAULT);

                pr.Capture();

                /*if (pr.TestDocument((int)PR_WINDOW_ID.PR_OW_DEFAULT) == (int)PR_TESTDOC.PR_TD_IN)
                 * {
                 *  MessageBox.Show("OK");
                 *  pr.Capture();
                 * }
                 * else
                 * {
                 *  MessageBox.Show("PAS OK");
                 *  pr.CloseDevice();
                 *  pr.Close();
                 *  return "";
                 * }*/
            }
            catch (Exception ex)
            {
                MessageBox.Show("Impossible de se connecter au scanner de pièces d'identité");
                Program.LogFich.Error("[ScannerPiece] Impossible de se connecter au scanner de pièces d'identité");
                Program.LogFich.Error(ex.ToString());

                //pr.CloseDevice();
                //pr.Close();
                return("");
            }

            try
            {
                if (File.Exists(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "recto.jpeg"))
                {
                    File.Delete(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "recto.jpeg");
                }

                doc = pr.Recognize(0);

                pr.SaveImage(0, (int)PR_LIGHT.PR_LIGHT_WHITE, (int)PR_IMAGE_TYPE.PR_IT_DOCUMENT, Environment.ExpandEnvironmentVariables("%TEMP%\\") + "recto.jpeg", (int)GX_IMGFILEFORMATS.GX_JPEG);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erreur : " + ex.ToString());
                Program.LogFich.Error("[ScannerPiece] Erreur : " + ex.ToString());
                //pr.CloseDevice();
                //pr.Close();
                return("");
            }

            try
            {
                //pr.SelfTest((int)PR_SELFTEST_ELEMENTS.PRV_ST_LIGHT_SWITCH);


                gxImage img = doc.FieldImage((int)PR_DOCFIELD.PR_DF_VIZ_FACE);
                if (img != null)
                {
                    if (File.Exists(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "PhotoIdentite.jpeg"))
                    {
                        File.Delete(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "PhotoIdentite.jpeg");
                    }
                    img.Save(Environment.ExpandEnvironmentVariables("%TEMP%\\") + "PhotoIdentite.jpeg", (int)GX_IMGFILEFORMATS.GX_JPEG);
                    img.Dispose();
                }

                MRZ = doc.Field((int)PR_DOCFIELD.PR_DF_MRZ1) + doc.Field((int)PR_DOCFIELD.PR_DF_MRZ2) + doc.Field((int)PR_DOCFIELD.PR_DF_MRZ3);
                if (MRZ.Equals(""))
                {
                    Program.LogFich.Info("[ScannerPiece] pas de piste MRZ sur le recto");
                }

                /*if (MessageBox.Show("Pour Scanner le verso, tournez la pièce et cliquer sur Oui.", "Scan Verso", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                 * {
                 *  pr.CloseDevice();
                 *  //pr.Close();
                 *  scan_verso();
                 * }*/


                if (this.MRZ.Equals("") && visiteurID.Equals(""))
                {
                    MessageBox.Show("Le Document n'a pas de piste MRZ");
                    Program.LogFich.Info("[ScannerPiece] Le Document n'a pas de piste MRZ");
                }

                return(MRZ);
            }
            catch (Exception ex)
            {
                Program.LogFich.Error("[ScannerPiece] n'a pas pu lire le recto du document : " + ex.ToString());
                return("");
            }
            finally
            {
                if (pr != null)
                {
                    pr.ResetDocument();
                    //pr.CloseDevice();
                    //pr.Close();
                    //pr.Dispose();
                }
            }
        }