| | |
| | | System.out.println("NET_DVR_StopRemoteConfig接口成功"); |
| | | } |
| | | } |
| | | /** |
| | | * 查询单张卡号关联的人脸信息 |
| | | * |
| | | * @param lUserID 用户登录句柄 |
| | | * @param CardNo 卡号 |
| | | */ |
| | | public static String getFaceCInfo(int lUserID, String CardNo) { |
| | | String filename =""; |
| | | HCNetSDK.NET_DVR_FACE_COND struFaceCond = new HCNetSDK.NET_DVR_FACE_COND(); |
| | | struFaceCond.read(); |
| | | struFaceCond.dwSize = struFaceCond.size(); |
| | | struFaceCond.dwFaceNum = 1; //查询一个人脸参数 |
| | | struFaceCond.dwEnableReaderNo = 1;//读卡器编号 |
| | | for (int j = 0; j < HCNetSDK.ACS_CARD_NO_LEN; j++) { |
| | | struFaceCond.byCardNo[j] = 0; |
| | | } |
| | | System.arraycopy(CardNo.getBytes(), 0, struFaceCond.byCardNo, 0, CardNo.getBytes().length); |
| | | struFaceCond.write(); |
| | | int m_lGetFaceHandle = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_GET_FACE, struFaceCond.getPointer(), struFaceCond.size(), null, null); |
| | | if (m_lGetFaceHandle == -1) { |
| | | System.out.println("建立查询人脸参数长连接失败,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
| | | return filename; |
| | | } else { |
| | | System.out.println("建立查询人脸参数长连接成功!"); |
| | | } |
| | | //查询结果 |
| | | HCNetSDK.NET_DVR_FACE_RECORD struFaceRecord = new HCNetSDK.NET_DVR_FACE_RECORD(); |
| | | struFaceRecord.read(); |
| | | while (true) { |
| | | dwState = AcsMain.hCNetSDK.NET_DVR_GetNextRemoteConfig(m_lGetFaceHandle, struFaceRecord.getPointer(), struFaceRecord.size()); |
| | | struFaceRecord.read(); |
| | | if (dwState == -1) { |
| | | System.out.println("NET_DVR_GetNextRemoteConfig查询人脸调用失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
| | | break; |
| | | } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT) { |
| | | System.out.println("查询中,请等待..."); |
| | | try { |
| | | Thread.sleep(10); |
| | | } catch (InterruptedException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | continue; |
| | | } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED) { |
| | | System.out.println("获取人脸参数失败, 卡号: " + CardNo); |
| | | break; |
| | | } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) { |
| | | System.out.println("获取人脸参数异常, 卡号: " + CardNo); |
| | | break; |
| | | } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS) { |
| | | if ((struFaceRecord.dwFaceLen > 0) && (struFaceRecord.pFaceBuffer != null)) { |
| | | FileOutputStream fout; |
| | | try { |
| | | filename = System.getProperty("user.dir") + "\\pic\\" + CardNo + "_Face.jpg"; |
| | | fout = new FileOutputStream(filename); |
| | | //将字节写入文件 |
| | | long offset = 0; |
| | | ByteBuffer buffers = struFaceRecord.pFaceBuffer.getByteBuffer(offset, struFaceRecord.dwFaceLen); |
| | | byte[] bytes = new byte[struFaceRecord.dwFaceLen]; |
| | | buffers.rewind(); |
| | | buffers.get(bytes); |
| | | fout.write(bytes); |
| | | fout.close(); |
| | | System.out.println("获取人脸参数成功, 卡号: " + CardNo + "图片保存路径: " + filename); |
| | | |
| | | } catch (FileNotFoundException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | break; |
| | | } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) { |
| | | System.out.println("获取卡参数完成"); |
| | | break; |
| | | } |
| | | } |
| | | if (!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceHandle)) { |
| | | System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
| | | } else { |
| | | System.out.println("NET_DVR_StopRemoteConfig接口成功"); |
| | | } |
| | | return filename; |
| | | } |
| | | |
| | | /** |
| | | * 删除单独人脸信息 |