本教程展示如何在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和加载,显示和保存图像教程。
中创建的64位Windows API项目的副本加载,显示和保存图像教程。如果项目不可用,请按照该教程中的步骤创建它。
要使用LEADTOOLS读取条形码并提取AAMVA数据,请添加所需的头文件和DLL文件。打开预编译的头文件(或pch.h或stdafx.h,取决于所使用的Visual Studio版本),并添加以下行:
# include“C: \ LEADTOOLS22 \ \ Ltbar.h包括”#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltbar_x.lib”)//条形码和AAMVA支持
请注意
有关特定工具箱功能或文件格式所需dll的完整列表,请参阅你的申请中包含的文件.
有关所需的Barcode dll的详细信息,请参阅帮助主题应用程序中包含的条形码文件.
许可证解锁项目所需的特性。它必须在调用任何工具箱功能之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。
创建项目、添加引用、设置许可证以及添加加载和显示图像代码之后,就可以开始编码了。
以下步骤适用于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数据并将其显示在消息框中。
请注意
如果没有可用于测试的带有驾照条形码的图像,则可以使用此文件路径下的图像:
C: \ LEADTOOLS22 \ \ \ license_sample_rear_aamva.png图像资源
方法的使用AAMVAID函数。