提取驾照AAMVA条码- Windows C DLL

本教程展示如何在Windows C/ c++ API应用程序中使用LEADTOOLS SDK从遵循AAMVA规范的PDF417条形码中提取信息。

概述
总结 本教程介绍如何在Windows C DLL应用程序中从遵循AAMVA规范的PDF417中执行数据提取。
完成时间 30分钟
Visual Studio项目 下载教程项目(19kb)
平台 Windows C DLL应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS
用另一种语言试试

所需的知识

在开始之前提取驾照AAMVA条码- Windows C DLL教程,熟悉创建项目和加载/显示图像的基本步骤添加引用和设置License加载,显示和保存图像教程。

创建项目并添加LEADTOOLS引用

中创建的64位Windows API项目的副本加载,显示和保存图像教程。如果项目不可用,请按照该教程中的步骤创建它。

要使用LEADTOOLS读取条形码并提取AAMVA数据,请添加所需的头文件和DLL文件。打开预编译的头文件(或pch.hstdafx.h,取决于所使用的Visual Studio版本),并添加以下行:

# include“C: \ LEADTOOLS22 \ \ Ltbar.h包括”#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltbar_x.lib”//条形码和AAMVA支持

请注意

有关特定工具箱功能或文件格式所需dll的完整列表,请参阅你的申请中包含的文件

有关所需的Barcode dll的详细信息,请参阅帮助主题应用程序中包含的条形码文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱功能之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。

添加AAMVA PDF417提取代码

创建项目、添加引用、设置许可证以及添加加载和显示图像代码之后,就可以开始编码了。

以下步骤适用于Visual Studio 2019;对于Visual Studio的其他版本,它们可能有所不同。

解决方案资源管理器双击资源文件(.rc)。

添加一个新的条形码菜单旁边的下拉菜单文件菜单。在新增的条形码菜单,添加&提取PDF417数据菜单项。新项目的ID应该是ID_BARCODE_EXTRACTPDF417DATA

指向函数和开关(wmId)语句的下面WM_COMMANDCase,添加一个新的Case:

开关(wmId)情况下ID_BARCODE_EXTRACTPDF417DATA:如果(LEADBmp.Flags.Allocated)ExtractPDF417Data (hWnd);其他的对话框(hWnd,文本("无法搜索AAMVA数据。未加载图像”),文本(“条形码演示”), MB_ICONERROR);打破//保留其余的代码

添加一个新的ExtractPDF417Data函数。你可以把这个函数放在指向函数,并添加以下代码:

无效ExtractPDF417Data (HWND HWND)如果(L_BarCodeInit(BARCODES_PDF_READ) != SUCCESS)返回pBARCODEDATA pBarCodes = NULL;barcodeereadpdf BarPdf = {0};BarPdf。uStructSize =运算符BARCODEREADPDF;BarPdf。nDirection = BARCODE_DIR_HORIZONTAL;BARCODECOLOR BarColor = {0};BarColor。uStructSize =运算符BARCODECOLOR;BarColor。dwColorBar = RGB(0,0,0);BarColor。dwColorSpace = RGB(255, 255, 255);//在整个位图中搜索PDF417条形码L_INT nRet = L_BarCodeRead(&LEADBmp, NULL, BARCODE_PDF417, BARCODE_SCANLINES_PER_PIXELS, BARCODE_BLOCK_SEARCH, 0, NULL, &BarPdf, &BarColor, &pBarCodes,运算符BARCODEDATA);如果(SUCCESS == nRet)如果(ParseAAMVAData(hwnd, pBarCodes) != SUCCESS)对话框(hwnd,文本("ParseAAMVAData返回错误"),文本(“条形码演示”), MB_ICONERROR);其他的对话框(hwnd,文本("无法读取PDF 417条形码"),文本(“条形码演示”), MB_ICONERROR);如果(pBarCodes)L_BarCodeFree (&pBarCodes);L_BarCodeExit ();

添加一个新的ParseAAMVAData从内部调用的函数ExtractPDF417Data ().添加下面的代码来解析PDF417条形码中的AAMVA数据:

L_INT parseaamvdata (HWND HWND, pBARCODEDATA pBARCODEDATA)如果(pBarCodeData !)返回失败;AAMVAID id = {0};//解析条形码AAMVA数据L_INT nRet = L_BarCodeParseAAMVAData(pBarCodeData->pszBarCodeData, pBarCodeData->nSizeofBarCodeData, &id, L_FALSE);如果(nRet != SUCCESS)返回nRet;L_CHAR szResultString[1024] =“发行人识别号码:”strcat_s (szResultString id.IssuerIdentificationNumber);/ /名字L_BOOL bInferredFromFullName;L_CHAR* pszFirstName = NULL;nRet = L_BarCodeAAMVAIDFirstName(&id, &pszFirstName, &bInferredFromFullName);如果(nRet != SUCCESS)返回nRet;strcat_s (szResultString"\nFirst Name: ");strcat_s (szResultString pszFirstName);//必须释放结果L_BarCodeAAMVAMemoryFree (pszFirstName);/ /姓名L_CHAR* pszLastName = NULL;nRet = L_BarCodeAAMVAIDLastName(&id, &pszLastName, &bInferredFromFullName);如果(nRet != SUCCESS)返回nRet;strcat_s (szResultString"\nLast Name: ");strcat_s (szResultString pszLastName);//必须释放结果L_BarCodeAAMVAMemoryFree (pszLastName);L_BOOL想;//检查我们是否可以确定ID持有人是否超过21nRet = L_BarCodeAAMVAIDOver21Available(&id, &bRes);如果(nRet != SUCCESS)返回nRet;strcat_s (szResultString“21 \也不要吗?:“);如果(想)//Over21可用。让我们检查ID hold是否为21+L_CHAR* pszCurrentDate = GetCurrentDate();nRet = L_BarCodeAAMVAIDOver21(&id, pszCurrentDate, &bRes);如果(nRet != SUCCESS)返回nRet;如果(想)strcat_s (szResultString“真正的”);其他的strcat_s (szResultString“假”);其他的//Over21不可用。strcat_s (szResultString“不可用”);szResultString MessageBoxA (hwnd,“AAMVA数据”, MB_OK);//释放AAMVAID结构nRet = L_BarCodeFreeAAMVAID(&id);返回nRet;

添加一个名为GetCurrentDate.返回日期的任何函数名称Format可以代替它。

# include < time.h >L_CHAR * GetCurrentDate ()静态字符currentDate [9];time_t t = time(NULL);结构体Tm local_t = {0};localtime_s (&local_t科技);wsprintfA (currentDate2.2 2.2 4.4“% d % d % d”, local_t。Tm_year + 1900, local_t。Tm_mon + 1, local_t.tm_mday);返回currentDate;

请注意

还有更多AAMVAID工具箱中的功能;上面的代码片段展示了一些常用的值。

运行项目

按下运行项目F5,或选择调试->开始调试

如果正确地执行了这些步骤,应用程序将运行并允许用户进行选择文件->开放加载包含条形码数据的图像。选择条形码->提取PDF417数据,使应用程序运行条形码识别并解析AAMVA数据并将其显示在消息框中。

提取PDF417条码数据显示给用户。

请注意

如果没有可用于测试的带有驾照条形码的图像,则可以使用此文件路径下的图像:C: \ LEADTOOLS22 \ \ \ license_sample_rear_aamva.png图像资源

总结

方法的使用AAMVAID函数。

另请参阅

iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2023领德科技有限公司版权所有。