c# - 在 Picturebox 中显示指纹
问题描述
我正在开发一个涉及保存指纹的功能,为此我使用了Digital Persona U 4500 reader.
下载并安装个人数字SDK并构建windows form c#应用程序。
我添加了名称为的控件:DigitalPersona Fingerprint Enrollment Control
并且实际上捕获了指纹
目标是能够可视化放置在阅读器中的足迹,以详细了解它的情况,为此我添加了一个要在其中显示的图片框,另外还包括以下内容:
public DPFP.Sample Sample = new DPFP.Sample();// instancia la muestra
DPFP.Capture.SampleConversion Convertor = new DPFP.Capture.SampleConversion();
Bitmap bitmap = null;
Convertor.ConvertToPicture(sample, ref bitmap);
PicBoxHuella.Image = bitmap;
使用前面的操作,它应该在图片中显示样本,但事实并非如此。有效并确定样本到达时为空。
解决方案
在OnCaptured
事件中,您从Fiv
en获取图像数据Data.Views
:
注意:pbFingerprint
是一个图片框,其中将显示图像。
private void enrollment_OnCaptured(EnrollmentControl enrollmentControl, CaptureResult captureResult, int fingerPosition)
{
if (captureResult.ResultCode == Constants.ResultCode.DP_SUCCESS)
{
if (captureResult.Data != null)
{
foreach (Fid.Fiv fiv in captureResult.Data.Views)
{
pbFingerprint.Image = CreateBitmap(fiv.RawImage, fiv.Width, fiv.Height);
}
}
}
}
/// <summary>
/// Create a bitmap from raw data in row/column format.
/// </summary>
/// <param name="bytes"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
private Bitmap CreateBitmap(byte[] bytes, int width, int height)
{
byte[] rgbBytes = new byte[bytes.Length * 3];
for (int i = 0; i <= bytes.Length - 1; i++)
{
rgbBytes[(i * 3)] = bytes[i];
rgbBytes[(i * 3) + 1] = bytes[i];
rgbBytes[(i * 3) + 2] = bytes[i];
}
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
for (int i = 0; i <= bmp.Height - 1; i++)
{
IntPtr p = new IntPtr(data.Scan0.ToInt64() + data.Stride * i);
System.Runtime.InteropServices.Marshal.Copy(rgbBytes, i * bmp.Width * 3, p, bmp.Width * 3);
}
bmp.UnlockBits(data);
return bmp;
}
推荐阅读
- tensorflow - 优化二元焦点损失和骰子损失
- kubernetes - Helm Charts 在不同的命名空间中创建秘密
- react-native - React Native 中的嵌套堆栈导航器和抽屉导航器
- powershell - Powershell - 带参数的进程列表
- arrays - 屏蔽 3D NumPy 数组 --> 返回 5D 数组
- linux - 将文件从本地机器复制到远程机器
- java - 函数F的大O
- html - 将数字垂直对齐到具有固定高度的居中列表项
- python - 如何阻止 Windows 命令提示符打开旧版本的 Python 文件?
- amazon-web-services - 如何处理“用户提供的路径 C:/Users/Libraries 不存在”。下面同时将对象从计算机复制到 s3?