LEADTOOLS 将一维和条形码读取图像 - Windows C DLL

将一维和条形码读取图像 - Windows C DLL

本教程介绍如何使用 Windows C DLL 应用程序中的 LEADTOOLS SDK 在加载的图像上写入一维和二维条形码信息。

概述 
概括本教程介绍如何L_BarCodeWrite在 Windows C DLL 应用程序中使用该函数。
完成时间30分钟
Visual Studio 项目下载教程项目 (19 KB)
平台Windows C DLL 应用程序
集成开发环境Visual Studio 2017、2019
开发许可证下载 LEADTOOLS
尝试使用其他语言

所需知识

在开始“将 1D 和 2D 条形码写入图像 - Windows C DLL”教程之前,请先查看“添加引用”和“设置许可证”以及“检测和提取条形码”教程,熟悉创建项目的基本步骤。

创建项目并添加 LEADTOOLS 引用

从“检测和提取条形码 - Windows C DLL”教程中创建的 64 位 Windows API 项目的副本开始。如果该项目不可用,请按照该教程中的步骤创建它。

确保预编译头文件(pch.hstdafx.h,取决于所使用的 Visual Studio 版本)中包含以下必需的头文件和 DLL 文件。

#include "C:\LEADTOOLS23\Include\L_Bitmap.h" // use actual path where you installed LEADTOOLS 
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltkrn_x.lib") 
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltfil_x.lib") // file loading and saving 
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltdis_x.lib") // image display 
 
#include "C:\LEADTOOLS23\Include\Ltbar.h" 
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltbar_x.lib") // barcode support 

笔记

有关您的应用程序所需的 DLL 的完整列表,请参阅应用程序中包含的文件 - C API

设置许可证文件

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

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

  • 评估许可证,在下载评估工具包时获得。它允许对工具包进行评估。
  • 部署许可证。如果需要部署许可证文件和开发者密钥,请参阅获取许可证

笔记

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

添加条形码写入器代码

创建项目、添加参考、设置许可证以及添加加载、显示、条形码和保存代码后,就可以开始编码了。

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

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

在“条形码”下拉菜单中添加新的“写入条形码”菜单项。新菜单项的 ID 应为。ID_BARCODE_WRITEBARCODE

转到WndProc函数并在switch (wmId)该案例下方的语句下WM_COMMAND添加一个新案例:

switch (wmId) 
{ 
case ID_BARCODE_WRITEBARCODE: 
   if (LEADBmp.Flags.Allocated) 
   { 
      Write1DBarcode(hWnd); 
      Write2DBarcode(hWnd); 
   } 
   else 
      MessageBox(hWnd, TEXT("Cannot write barcodes. No image loaded"), TEXT("Barcode Demo"), MB_ICONERROR); 
   break; 
// keep rest of the code as is 

将以下代码添加到两个新的条形码写入函数中。这些函数可以放在WndProc函数上方:

void Write1DBarcode(HWND hwnd) 
{ 
   if (L_BarCodeInit(BARCODES_1D) != SUCCESS) 
      return; 
 
   BARCODEDATA BarCodeData = { 0 }; 
   BARCODECOLOR BarColor = { 0 }; 
   BARCODE1D BarCode1D = { 0 }; 
   L_INT nRet; 
 
   BarColor.uStructSize = sizeof(BARCODECOLOR); 
   BarColor.dwColorBar = RGB(0, 0, 0); 
   BarColor.dwColorSpace = RGB(255, 255, 255); 
 
   BarCodeData.uStructSize = sizeof(BarCodeData); 
   BarCodeData.rcBarLocation.left = 50; 
   BarCodeData.rcBarLocation.top = 50; 
   BarCodeData.rcBarLocation.right = 650; 
   BarCodeData.rcBarLocation.bottom = 150; 
   BarCodeData.nUnits = BARCODE_SCANLINES_PER_PIXELS; 
   BarCodeData.ulType = BARCODE_1D_CODE_128; 
   char szDataString[] = "Code 128 by LEADTOOLS"; 
   BarCodeData.pszBarCodeData = szDataString; 
   BarCodeData.nSizeofBarCodeData = (L_INT)strlen(BarCodeData.pszBarCodeData); 
 
   BarCode1D.uStructSize = sizeof(BARCODE1D); 
   BarCode1D.bErrorCheck = TRUE; 
   BarCode1D.bOutShowText = TRUE; 
 
   //Write the barcode 
   nRet = L_BarCodeWrite(&LEADBmp, &BarCodeData, &BarColor, BARCODE_USECOLORS, &BarCode1D, NULL, NULL, NULL, NULL, NULL, NULL, NULL); 
 
   if (SUCCESS == nRet) 
      InvalidateRect(hwnd, NULL, TRUE); 
   else 
      MessageBox(hwnd, TEXT("Could Not Write 1D Barcode"), TEXT("Barcode Demo"), MB_ICONERROR); 
   L_BarCodeExit(); 
} 
 
void Write2DBarcode(HWND hwnd) 
{ 
   if (L_BarCodeInit(BARCODES_QR_WRITE) != SUCCESS) 
      return; 
 
   BARCODEDATA BarCodeData = { 0 }; 
   BARCODECOLOR BarColor = { 0 }; 
   BARCODEWRITEQR BarCodeQR = { 0 }; 
   L_INT nRet; 
 
   BarColor.uStructSize = sizeof(BARCODECOLOR); 
   BarColor.dwColorBar = RGB(0, 0, 0); 
   BarColor.dwColorSpace = RGB(255, 255, 255); 
 
   BarCodeData.uStructSize = sizeof(BarCodeData); 
   BarCodeData.rcBarLocation.left = 50; 
   BarCodeData.rcBarLocation.top = 250; 
   BarCodeData.rcBarLocation.right = 650; 
   BarCodeData.rcBarLocation.bottom = 550; 
   BarCodeData.nUnits = BARCODE_SCANLINES_PER_PIXELS; 
   BarCodeData.ulType = BARCODE_QR_M1_DEF; //Default Model 1 QR Code size 
   char szDataString[] = "https://www.leadtools.com/help/sdk/dh/to/qr-code-barcodes-in-leadtools.html"; 
   BarCodeData.pszBarCodeData = szDataString; 
   BarCodeData.nSizeofBarCodeData = (L_INT)strlen(BarCodeData.pszBarCodeData); 
 
   BarCodeQR.uStructSize = sizeof(BarCodeQR); 
   BarCodeQR.ulFlags = BARCODE_JUSTIFY_H_CENTER | BARCODE_JUSTIFY_V_CENTER; 
 
   //Write the barcode 
   nRet = L_BarCodeWrite(&LEADBmp, &BarCodeData, &BarColor, BARCODE_USECOLORS, NULL, NULL, NULL, &BarCodeQR, NULL, NULL, NULL, NULL); 
 
   if (SUCCESS == nRet) 
      InvalidateRect(hwnd, NULL, TRUE); 
   else 
      MessageBox(hwnd, TEXT("Could Not Write 2D Barcode"), TEXT("Barcode Demo"), MB_ICONERROR); 
   L_BarCodeExit(); 
} 

运行项目

按F5或选择“调试” -> “开始调试”来运行项目。

如果正确遵循这些步骤,应用程序应该可以运行。选择“文件” -> “打开”,加载要写入条形码的图像。选择“条形码” -> “写入条形码”,应用程序会在图像上写入两个新的条形码。

可以调整边界LeadRect来选择条形码在图像上的写入位置。此外,可以通过修改 的值来更改要写入的条形码符号BarCodeData.ulType

测试条形码符号书写

本教程介绍了如何在 Windows C API 应用程序中使用 LEADTOOLS SDK 在加载的图像上写入两种类型的条形码。

参见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值