【控件】ZXing.Delphi:支持 Delphi XE7 -12 Athens 的条码扫描库

【控件】ZXing.Delphi:支持 Delphi XE7 -12 Athens 的条码扫描库-Delphi 大神网
【控件】ZXing.Delphi:支持 Delphi XE7 -12 Athens 的条码扫描库
此内容为付费资源,请付费后查看
10积分
付费资源
已售 3
欢迎加入全网最大Delphi 技术交流群 682628230
ZXing.Delphi  是一个基于著名的开源条码库 ZXing(“Zebra Crossing”)的原生 Object Pascal 库。这个移植版本基于 .Net 的 Redth 移植和 Java 版本。ZXing.Delphi 是第一个原生 FireMonkey 条码库,支持所有 FireMonkey 移动平台,并且从 v3.1 版本开始,也完全支持 Windows VCL 应用程序(不依赖于 FMX.Graphics 单元)。
使用这个库,你可以在不链接外部库的情况下以原生速度进行扫描,避免兼容性问题和依赖性问题。它非常快速,并且兼容 Delphi XE7 至 11 Alexandria,测试范围涵盖 iOS 8.x 至 15.x、Android 32/64 位、Windows 32/64 位和 OSX。ZXing.Delphi 的目标是让条码扫描变得轻松、无痛、快速,并且可以集成到你的 FireMonkey 或原生 Windows(VCL 或 Firemonkey)应用程序中。
你只需将源文件包含到现有项目中,并在项目中构建 ZXing.Delphi 源代码即可。

相机

标准的相机组件在 Android 和 iOS 上可能速度较慢。你可能需要寻找第三方产品或自行开发以获得更流畅的体验。从 Delphi 11 开始,标准相机组件似乎有了很大的改进。

支持的格式

一维产品 一维工业 二维
UPC-A Code 39 QR Code
UPC-E Code 93 Data Matrix(仅支持中心图像)
EAN-8 Code 128  
EAN-13 ITF  

功能

  • 为所有 VCL 和 FireMonkey 平台(iOS/Android/Windows/OSX)提供原生编译的条码扫描功能。
  • 100% 免费,无需许可费用。
  • 高速扫描。
  • 简单的 API。
  • 提供单元测试。
  • 提供测试项目。

更新日志

  • v3.9.13:修复了 QR 码的尺寸计算问题,提高了 sizeOfBlackWhiteBlackRunBothWays 的准确性,替换了整数除法为浮点除法。
  • v3.9.12:修复了 Bresenham 算法中的错误。
  • v3.9.11:引入了 FRAMEWORK_FMXFRAMEWORK_VCL 的使用。
  • v3.9.8:修复了 DataMatrix 的问题和 QR 码的读取错误,优化了代码。
  • v3.9.7:更新了兼容性修复。
  • v3.9.6:进行了大量修复。
  • v3.9.5:修复了 Android 的溢出问题。
  • v3.9.4:修复了使用 TBarcodeFormat.Auto 时的整数溢出问题。
  • v3.9.3:更新了演示应用的兼容性,修复了边界检查和段错误。
  • v3.9.2:移除了高级测试应用,修复了解码中的访问违规和范围检查错误。
  • v3.9.0:修复了 QR 码在 64 位 Android 和 iOS 上的问题。
  • v3.8.3:修复了内存泄漏问题,简化了高级测试应用。
  • v3.8.1:为高级测试应用添加了 Rio 兼容的 Android 相机优化库。
  • v3.8:修复了演示应用中的权限问题。
  • v3.7:在演示应用中添加了移动用户权限请求。
  • v3.6:修复了 QR 码的错误和内存泄漏问题。
  • v3.5:修复了 QR 码的错误。
  • v3.4:添加了高级测试应用,具有更快的相机性能、声音、条码标记等功能。
  • v3.3.1:修复了 Code39 的错误。
  • v3.3:添加了 UPC-A、UPC-E 和 Code 39。
  • v3.2:添加了 EAN8 和 EAN13。
  • v3.1:添加了 VCL 支持,修复了内存泄漏问题。
  • v3.0:进行了大规模文件结构调整,添加了 DataMatrix 支持。
  • v2.4:修复了 Code128 的问题。
  • v2.3:修复了内存泄漏问题,添加了 Android 支持。
  • v2.2:修复了 iOS 32 位上的崩溃问题。
  • v2.1:实现了 ITF 支持。
  • v2.0:实现了 QR 码支持。
  • v1.1:实现了 Code 93 支持。
  • v1.0:初始上传,实现了 Code 128 支持。

优化建议

  • 不要扫描每一帧图像,可以跳过部分帧以节省 CPU 和电量。
  • 对于移动设备,尽量避免高分辨率相机设置,例如 640×480 分辨率通常已足够。
  • 如果需要扫描特定条码格式(如 EAN-8),请仅设置对应格式以提高效率。

其他条码支持

虽然 ZXing.Delphi 已经支持多种条码格式,但仍有一些格式尚未实现。如果你需要添加新的条码格式,可以通过将 C# 源代码转换为 Pascal 来实现。例如,Code39 的 C# 源代码可以在 GitHub 查看。
如果你希望帮助添加新的条码格式,请告知我们,避免重复工作。你可以参考以下转换步骤:
  1. 在 .NET 中构建代码。
  2. 使用 “Reflector 6”(支持 Delphi 反编译功能)将代码反编译为 Delphi.NET。
  3. 将文件复制到项目中,并将代码从 Delphi.Net 转换为原生 Delphi。
  4. 使用通用数组列表,这更简单且类型安全。
  5. 保持原始 .Net 源代码的架构和目录结构。

使用方法

如果你使用的是 Delphi 11.1 之前的版本,需要在项目选项中设置编译器定义(project options->Delphi compiler->Conditional defines)。例如:
  • FRAMEWORK_VCL:如果项目使用 VCL 框架,则该变量为 true
  • FRAMEWORK_FMX:如果项目使用 FireMonkey(FMX)框架,则该变量为 true
使用 ZXing.Delphi 的最简单示例如下:
  1. 将所有文件包含到你的项目中,或使用测试应用中提供的搜索路径。
  2. 添加 usesScanManagerZXing.BarcodeFormatZXing.ReadResult
  3. 添加变量:FScanManagerFReadResult
  4. 初始化扫描管理器并执行扫描:
FScanManager := TScanManager.Create(TBarcodeFormat.CODE_128, nil);
FReadResult := FScanManager.Scan(scanBitmap);
在实际应用中,为了保持应用的响应性,扫描操作需要并行运行。测试应用展示了如何实现这一点,它使用了 Firemonkey 的并行库。在测试应用中,相机的分辨率被设置为中等(FMX.Media.TVideoCaptureQuality.MediumQuality),这在 XE8 及更高版本中是支持的。需要注意的是,分辨率越高,扫描所需的时间就越长。适当调整分辨率可以提高性能。
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享