diff --git a/CPF_Cef/Common/ChunkedUpload.cs b/CPF_Cef/Common/ChunkedUpload.cs
index d3cbd2b..77cab30 100644
--- a/CPF_Cef/Common/ChunkedUpload.cs
+++ b/CPF_Cef/Common/ChunkedUpload.cs
@@ -547,56 +547,22 @@ namespace AksWebBrowser.Common
string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
string base64 = jo4["face_data"].ToString();
- if (Parame.isSM)
+ IDCardModel iDCardModel = new IDCardModel();
+ iDCardModel.Name = jo4["cn_name"].ToString();
+ iDCardModel.Sex = jo4["sex"].ToString();
+ iDCardModel.Nation = jo4["nation"].ToString();
+ iDCardModel.BirthDay = jo4["birth_date"].ToString();
+ iDCardModel.Addr = jo4["address"].ToString();
+ iDCardModel.Id = jo4["idcard_number"].ToString();
+ iDCardModel.Regorg = jo4["deparment"].ToString();
+ iDCardModel.StartDate = jo4["validity_begin"].ToString();
+ iDCardModel.EndDate = jo4["balidity_end"].ToString();
+ iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64;
+ var OBJ = new
{
- var faceA = Utils.Base64ByImages(base64);
- //开启人脸比对
- LhtCF lht = new LhtCF();
- string stat = lht.LhtCFFace("", faceA);
- if (stat == "100")
- {
- IDCardModel iDCardModel = new IDCardModel();
- iDCardModel.Name = jo4["cn_name"].ToString();
- iDCardModel.Sex = jo4["sex"].ToString();
- iDCardModel.Nation = jo4["nation"].ToString();
- iDCardModel.BirthDay = jo4["birth_date"].ToString();
- iDCardModel.Addr = jo4["address"].ToString();
- iDCardModel.Id = jo4["idcard_number"].ToString();
- iDCardModel.Regorg = jo4["deparment"].ToString();
- iDCardModel.StartDate = jo4["validity_begin"].ToString();
- iDCardModel.EndDate = jo4["balidity_end"].ToString();
- iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64;
- var OBJ = new
- {
- Data = iDCardModel
- };
- return JsonConvert.SerializeObject(OBJ);
- }
- else
- {
-
- return "500";
- }
- }
- else
- {
- IDCardModel iDCardModel = new IDCardModel();
- iDCardModel.Name = jo4["cn_name"].ToString();
- iDCardModel.Sex = jo4["sex"].ToString();
- iDCardModel.Nation = jo4["nation"].ToString();
- iDCardModel.BirthDay = jo4["birth_date"].ToString();
- iDCardModel.Addr = jo4["address"].ToString();
- iDCardModel.Id = jo4["idcard_number"].ToString();
- iDCardModel.Regorg = jo4["deparment"].ToString();
- iDCardModel.StartDate = jo4["validity_begin"].ToString();
- iDCardModel.EndDate = jo4["balidity_end"].ToString();
- iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64;
- var OBJ = new
- {
- Data = iDCardModel
- };
- return JsonConvert.SerializeObject(OBJ);
- }
+ Data = iDCardModel
+ };
+ return JsonConvert.SerializeObject(OBJ);
}
else
{
diff --git a/CPF_Cef/Common/Utils.cs b/CPF_Cef/Common/Utils.cs
index 801bcb1..9f3015f 100644
--- a/CPF_Cef/Common/Utils.cs
+++ b/CPF_Cef/Common/Utils.cs
@@ -159,6 +159,39 @@ namespace AksWebBrowser.Common
return Imgpath;
}
+ //base64转图片
+ public static string Base64ByImagesPath(string base64, string filename)
+ {
+ //生成文件
+ string dirpath = Utils.getSystemPaht() + @"/wwwroot/TmpFile";
+ if (!Directory.Exists(dirpath))
+ {
+ Directory.CreateDirectory(dirpath);
+ }
+ var tempFile = dirpath + $"/{filename}.txt";
+ using (StreamWriter sw = new StreamWriter(tempFile))
+ {
+ sw.Write(base64);
+ sw.Close();
+ sw.Dispose();
+ }
+ //生成图片
+ string dirpath1 = Utils.getSystemPaht() + @"/wwwroot/TmpFile";
+ if (!Directory.Exists(dirpath1))
+ {
+ Directory.CreateDirectory(dirpath1);
+ }
+ var Imgpath = dirpath1 + $"/{filename}.jpg";
+ string command = $"base64 -d {tempFile} > {Imgpath}";
+ MainModel.ShllCommad(command);
+ //删除图片
+ Task.Run(() =>
+ {
+ File.Delete(tempFile);
+ });
+ return Imgpath;
+ }
+
///
/// 文字分段
///
diff --git a/CPF_Cef/FrmMain.cs b/CPF_Cef/FrmMain.cs
index c1250c4..5322c6c 100644
--- a/CPF_Cef/FrmMain.cs
+++ b/CPF_Cef/FrmMain.cs
@@ -18,8 +18,10 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{
public class FrmMain : Window
{
- public int h= 1080;
- public int w = 1920;
+ public int w = 1080;
+ public int h = 1920;
+ //public int h = 1080;
+ //public int w = 1920;
protected override void InitializeComponent()
{
diff --git a/CPF_Cef/MainModel.cs b/CPF_Cef/MainModel.cs
index 0353c0b..4049030 100644
--- a/CPF_Cef/MainModel.cs
+++ b/CPF_Cef/MainModel.cs
@@ -32,6 +32,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser
public class MainModel : CPF.CpfObject
{
private static List allSockets;
+
//初始化网络连接
public static void DeviceControllerInit()
{
@@ -245,19 +246,8 @@ namespace AKS.EnterpriseLibrary.WebBrowser
///
public static string IDCardRead(string content)
{
-
try
{
-
-
- Task.Run(async () =>
- {
- StartFace(IdcardStr);
- });
- @event9.WaitOne();
-
-
-
var param = content.ConvertToAnonymousType(new
{
code = default(string),
@@ -272,24 +262,59 @@ namespace AKS.EnterpriseLibrary.WebBrowser
}
else
{
- if (IdcardStr == "500")
- {
- result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}";
- }
- else if (IdcardStr.Contains("HttpClient.Timeout"))
+ if (IdcardStr.Contains("HttpClient.Timeout"))
{
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证读取失败" + "\"}";
}
else
{
- result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}";
+
if (Parame.isSM)
{
Task.Run(async () =>
{
- StartFace(IdcardStr);
+ JObject jo = (JObject)JsonConvert.DeserializeObject(IdcardStr);
+ string data = jo["Data"].ToString();
+ jo = (JObject)JsonConvert.DeserializeObject(data);
+ string ImageBase64 = jo["ImageBase64"].ToString();
+ StartFace(ImageBase64);
});
@event9.WaitOne();
+ if (!string.IsNullOrEmpty(smresults))
+ {
+ if (smresults == "200")
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}";
+ }
+ else if (smresults == "500")
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证超时" + "\"}";
+ }
+ else if (smresults == "600")
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一活体检测失败" + "\"}";
+ }
+ else if (smresults == "700")
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "服务端连接异常" + "\"}";
+ }
+ else if (smresults == "800")
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}";
+ }
+ else
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败。" + "\"}";
+ }
+ }
+ else
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}";
+ }
+ }
+ else
+ {
+ result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}";
}
return result;
}
@@ -1625,7 +1650,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser
///
private static string smresults = string.Empty;
private static AutoResetEvent @event9 = new AutoResetEvent(false);
- private static async void StartFace(string IdcardStr)
+ private static async void StartFace(string ImageBase64)
{
try
{
@@ -1635,10 +1660,11 @@ namespace AKS.EnterpriseLibrary.WebBrowser
function = "CF_OpenCamera",
show = 1,
fx = 200,
- fy = 450,
- fw = 640,
- fh = 480
+ fy = 800,
+ fw = 800,
+ fh = 600
};
+ Task.Delay(1000).Wait();
//打开摄像头
webSocket.Send(JsonConvert.SerializeObject(mode), "CF_OpenCamera");
//开始活检
@@ -1647,36 +1673,72 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{
//关闭摄像头
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
- //关闭连接
webSocket.Close();
}
else if (smresults == "700")//服务端未启动
- {
- //关闭连接
- webSocket.Close();
- }
+ { webSocket.Close(); }
else
{
-
JObject jo = (JObject)JsonConvert.DeserializeObject(smresults);
string nEventId = jo["nEventId"].ToString();
if (nEventId == "100")
{
- string faceA = Utils.Base64ByImages(IdcardStr);
- string faceB = Utils.Base64ByImages(jo["ImgBase64"].ToString());
+ //var faceA = "/data/home/aks/aks/wwwroot/TmpFile/faceA.jpg";
+ //var faceB = "/data/home/aks/aks/wwwroot/TmpFile/faceB.jpg";
+ string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), "faceA");
+ string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB");
+ var mode2 = new
+ {
+ function = "CF_FaceCompare",
+ filePathA = faceA,
+ filePathB = faceB
+ };
//开始人脸比对
-
+ smresults = await webSocket.Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare");
+ Log.Info(smresults);
+ //停止活检
+ webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect");
+ //关闭摄像头
+ webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
+ if (smresults == "500" || smresults == "400")//500:超时,400:接收数据错误
+ {
+ //关闭摄像头
+ webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
+ webSocket.Close();
+ }
+ else if (smresults == "700")//服务端未启动
+ { webSocket.Close(); }
+ else
+ {
+ jo = (JObject)JsonConvert.DeserializeObject(smresults);
+ string success = jo["success"].ToString();
+ if (success == "0")
+ {
+ string score = jo["score"].ToString();
+ if (Convert.ToInt32(score) >= Parame.score)
+ {
+ smresults = "200";//比对成功
+ }
+ else
+ {
+ smresults = "800";//非本人
+ }
+ }
+ else
+ {
+ smresults = "400";
+ }
+ }
}
else
{
+ //停止活检
+ webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect");
+ //关闭摄像头
+ webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
//活体检测失败
smresults = "600";
}
- //停止活检
- webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect");
- //关闭摄像头
- webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
- //关闭连接
webSocket.Close();
}
@event9.Set();
diff --git a/CPF_Cef/Parame.cs b/CPF_Cef/Parame.cs
index e9c4cc9..9e36ddf 100644
--- a/CPF_Cef/Parame.cs
+++ b/CPF_Cef/Parame.cs
@@ -44,9 +44,11 @@ namespace AksWebBrowser
//是否开启高拍仪
public static bool isGPY = false;
//双目摄像头
- public static string smWebsocket = "ws://192.168.0.234:22226";
+ public static string smWebsocket = "ws://127.0.0.1:22226";
//消息推送
public static string messageData { get; set; }
+ //人脸比对阈值
+ public static int score = 65;
}
public struct Func
{