c# - ZKTeco 将 3 指纹 C# 与 ZKFingerSDK 合并
问题描述
我一直在开发一个小型应用程序,以在 3 次扫描后获取指纹。我使用了 ZKFingerSDK,当尝试获取注册指纹时,它会将图像恢复为黑色。我正在使用 ZK9500 设备
if (RegisterCount >= REGISTER_FINGER_COUNT && !bIdentify)
{
RegisterCount = 0;
ret = GenerateRegisteredFingerPrint(); // <--- GENERATE FINGERPRINT TEMPLATE
if (zkfp.ZKFP_ERR_OK == ret)
{
ret = AddTemplateToMemory(); // <--- LOAD TEMPLATE TO MEMORY
if (zkfp.ZKFP_ERR_OK == ret) // <--- ENROLL SUCCESSFULL
{
string fingerPrintTemplate = string.Empty;
zkfp.Blob2Base64String(newRegTmp, cbCapTmp, ref fingerPrintTemplate);
newRegTmp = zkfp.Base64String2Blob(fingerPrintTemplate);
Bitmap bmp2;
MemoryStream ms2 = new MemoryStream();
BitmapFormat.GetBitmap(newRegTmp, mfpWidth, mfpHeight, ref ms2);
bmp2 = new Bitmap(ms2);
this.pictureBox1.Image = bmp2;
Console.WriteLine("finger print" + fingerPrintTemplate);
textRes.AppendText("merged " + fingerPrintTemplate + "\n");
}
}
}
解决方案
我假设ret = AddTemplateToMemory();
将模板加载到 newRegTmp 中。
zkfp.Blob2Base64String(newRegTmp, cbCapTmp, ref fingerPrintTemplate);
从这一行我了解到您在 newRegTmp 处拥有指纹的原始数据,并且您正在将 cbCapTmp 的大小提取到 fingerPrintTemplate 中。
在这种情况下,您不应该在下一行中使用 newRegTmp newRegTmp =zkfp.Base64String2Blob(fingerPrintTemplate);
,它会用 Base64 字符串覆盖实际数据。您可以使用 Base64 字符串在带有 img 标签的网页上显示图像。但是要将原始数据转换为图像,您需要将实际数据传递给 GetBitMap。
如果上述建议不起作用,请分享 AddTemplateToMemory 的实现。
推荐阅读
- android - 添加时标记抛出错误,如何解决这个问题?
- php - PHP if条件错误语法错误在服务器中
- python - Python:如何查找 mpl_toolkits 的版本号?
- r - 如何根据连接条件从 R 中的两个不同数据框中添加两列
- apache-flink - 将对象节点转换为 json 节点
- ios - 不能符合来自objective-c的快速委托协议
- javascript - 第三方脚本在页面刷新之前不会加载
- caching - Prestashop 模块卡在维护模式
- azure-cosmosdb - Cosmos DB Autopilot 未使用分区上的吞吐量分布
- algorithm - 复杂矢量图像的数学方程是如何计算的?