如何从C#中的字节数组中获取数字角色fmd或fid?
我有一个Xamarin表单中的应用程序,它使用数字角色,我成功地从Android Java的代码中改编了它 问题是这个应用程序只返回指纹的byte[]数组,所以我使用了一个接受byte数组的web服务,但我无法成功地将byte[]转换为fmd或fid来比较指纹 我正在尝试使用方法如何从C#中的字节数组中获取数字角色fmd或fid?,c#,C#,我有一个Xamarin表单中的应用程序,它使用数字角色,我成功地从Android Java的代码中改编了它 问题是这个应用程序只返回指纹的byte[]数组,所以我使用了一个接受byte数组的web服务,但我无法成功地将byte[]转换为fmd或fid来比较指纹 我正在尝试使用方法FeatureExtraction.CreateFmdFromRaw,但没有成功 public ActionResult validateLogin(ImageSend fimage,DataTable figerUse
FeatureExtraction.CreateFmdFromRaw
,但没有成功
public ActionResult validateLogin(ImageSend fimage,DataTable figerUsers) {
ActionResult r = new ActionResult() {
Success = false, ResultCode = ResultCode.GeneralError
};
try
{
// RawImage x = new RawImage(fimage.IMAGE_WIDTH, fimage.IMAGE_HEIGHT,75,10,fimage.data);
byte[] x = Convert.FromBase64String(fimage.data);
// Fmd fmd = new Fmd(x, 1, "1.0");
// byte[] x = fimage.data;
//duda cantidad de dpi
//Fid.Fiv fiv = new Fid.Fiv(x);
// DPCtlUruNet.IdentificationControl.FinishIdentification
DataResult<Fmd> resultConversion = FeatureExtraction.CreateFmdFromRaw(x, 1,0,fimage.IMAGE_WIDTH,fimage.IMAGE_HEIGHT, 75, Constants.Formats.Fmd.ANSI); ;
if (resultConversion.ResultCode == Constants.ResultCode.DP_SUCCESS)
{
Fmd fmd1 = resultConversion.Data;
//Fmd fmd1 = fmd;
Fmd fmd2 = null;
CompareResult compareResult;
foreach (DataRow row in figerUsers.Rows)
{
fmd2 = Fmd.DeserializeXml(row["FINGER"].ToString());
compareResult = Comparison.Compare(fmd1, 0, fmd2, 0);
if (compareResult.Score < (PROBABILITY_ONE / (double)100000))
{
r.Success = true;
r.Message = "Login Correcto";
r.ResultCode = ResultCode.Success;
return r;
}
}
}
else {
r.Success = false;
r.ResultCode = ResultCode.GeneralError;
r.Message = $"Error generando objeto de comparacion de huellas\n{x.Length} result: {resultConversion.ResultCode.ToString()}";
//r.Message = $"Error generando objeto de comparacion de huellas\n{x.Length} result: {fmd.ToString()}";
}
}
catch (Exception ex) {
r.Success = false;
r.ResultCode = ResultCode.GeneralError;
r.Message = ex.Message+ex.StackTrace;
}
return r;
}
public class ImageSend
{
public string name;
public string data;
public int IMAGE_HEIGHT = 290;
public int IMAGE_WIDTH;
}
公共操作结果验证登录(ImageSend fimage,DataTable figerUsers){
ActionResult r=新的ActionResult(){
Success=false,ResultCode=ResultCode.GeneralError
};
尝试
{
//RawImage x=新的RawImage(fimage.IMAGE\u宽度,fimage.IMAGE\u高度,75,10,fimage.data);
字节[]x=Convert.FromBase64String(fimage.data);
//Fmd Fmd=新Fmd(x,1,“1.0”);
//字节[]x=fimage.data;
//杜达康蒂达德新闻部
//Fid.Fiv Fiv=新Fid.Fiv(x);
//DPCTLURNET.IdentificationControl.FinishIdentification
DataResult resultConversion=FeatureExtraction.CreateFmdFromRaw(x,1,0,fimage.IMAGE_宽度,fimage.IMAGE_高度,75,Constants.Formats.Fmd.ANSI);
if(resultConversion.ResultCode==Constants.ResultCode.DP_成功)
{
Fmd fmd1=结果转换.Data;
//Fmd fmd1=Fmd;
Fmd fmd2=空;
比较结果比较结果;
foreach(figerUsers.Rows中的DataRow行)
{
fmd2=Fmd.DeserializeXml(第[“FINGER”].ToString()行);
比较结果=比较。比较(fmd1,0,fmd2,0);
如果(比较结果分数<(概率1/(双)100000))
{
r、 成功=真实;
r、 Message=“Login Correcto”;
r、 ResultCode=ResultCode.Success;
返回r;
}
}
}
否则{
r、 成功=错误;
r、 ResultCode=ResultCode.GeneralError;
r、 Message=$“Error generando objeto de comparicion de huellas\n{x.Length}结果:{resultConversion.ResultCode.ToString()}”;
//r、 Message=$“Error generando objeto de comparicion de huellas\n{x.Length}结果:{fmd.ToString()}”;
}
}
捕获(例外情况除外){
r、 成功=错误;
r、 ResultCode=ResultCode.GeneralError;
r、 Message=ex.Message+ex.StackTrace;
}
返回r;
}
公共类ImageSend
{
公共字符串名称;
公共字符串数据;
公共int图像_高度=290;
公共int图像宽度;
}
它返回DP_INVALID_FID