项目概述
FMXBarcode 是一个专为 Delphi FireMonkey (FMX) 框架设计的开源组件库,旨在为开发者提供一套简单、高效且统一的接口,用于在 Windows, macOS, Android 和 iOS 等多平台环境下实现条码(Barcode)与二维码(QR Code)的生成与识别。
在现代企业级应用中,扫描资产标签、读取物流单号或生成分享二维码是极高频的需求。FMXBarcode 通过封装底层的图像处理逻辑,让开发者无需深入研究复杂的条码编码标准(如 Code128, EAN-13, QR Code 等),即可通过简单的组件属性设置实现功能。
核心功能特性
1. 多格式支持
FMXBarcode 涵盖了市面上绝大多数主流的条码标准: - 一维码(1D Barcodes): 支持 Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E 等。 - 二维码(2D Barcodes): 深度支持 QR Code,能够处理不同版本的矩阵编码。
2. 跨平台一致性
得益于 FireMonkey 框架,该项目确保了在不同操作系统上的 UI 表现一致。无论是在 Android 手机上调用摄像头扫描,还是在 Windows 桌面端生成打印标签,其 API 调用逻辑完全相同。
3. 轻量化与高性能
项目避免了依赖沉重的第三方商业库,采用了高效的算法实现,确保在移动端设备上扫描时的实时性和低延迟。
4. 简单的集成流程
通过将组件拖放到 FMX 窗体上,或在代码中动态创建,开发者可以在几分钟内完成从“安装”到“运行”的闭环。
快速上手实例
以下是使用 FMXBarcode 实现两种最常见场景的代码示例。
场景一:生成一个二维码(QR Code)
假设你需要在应用中生成一个包含公司官网 URL 的二维码,并将其显示在界面上。
uses FMXBarcode; // 引入组件单元 procedure TForm1.GenerateQRCode; var BarcodeGen: TFMXBarcodeGenerator; begin // 1. 创建生成器实例 BarcodeGen := TFMXBarcodeGenerator.Create; try // 2. 设置条码类型为 QR Code BarcodeGen.BarcodeType := btQRCode; // 3. 设置要编码的内容 BarcodeGen.Value := 'https://github.com/ivanovsergeyminsk/FMXBarcode'; // 4. 设置图像尺寸与颜色 BarcodeGen.Width := 300; BarcodeGen.Height := 300; BarcodeGen.Color := TColor.Black; BarcodeGen.BackColor := TColor.White; // 5. 将生成的位图赋值给界面上的 TImage 控件 Image1.Bitmap.Assign(BarcodeGen.Generate); finally BarcodeGen.Free; end; end;
场景二:识别/扫描条码图像
当你获取了一张包含条码的图片(例如通过相机拍摄或从相册加载),可以使用以下逻辑进行解析。
uses
FMXBarcode;
procedure TForm1.DecodeBarcodeImage;
var
BarcodeReader: TFMXBarcodeReader;
DecodedText: string;
begin
// 1. 创建读取器实例
BarcodeReader := TFMXBarcodeReader.Create;
try
// 2. 加载需要识别的图片
BarcodeReader.LoadBitmap(Image1.Bitmap);
// 3. 执行识别操作
// Decode 方法会自动尝试匹配支持的多种条码格式
if BarcodeReader.Decode(DecodedText) then
begin
ShowMessage('识别成功!内容为: ' + DecodedText);
end
else
begin
ShowMessage('未能识别条码,请确保图片清晰。');
end;
finally
BarcodeReader.Free;
end;
end;进阶开发指南
性能优化建议
在移动端实现“实时扫描”时,建议不要在每一帧图像上都调用 Decode 方法,因为这会消耗大量 CPU。推荐方案:
- 抽帧处理: 每隔 3-5 帧处理一次图像。
- 区域裁剪: 仅对屏幕中心定义的“扫描框”区域进行像素分析,减少计算量。
常见问题排查
识别率低: 确保输入的图像对比度足够,且条码周围留有足够的白色静区(Quiet Zone)。
依赖缺失: 在 Android 平台上,请确保在项目选项中开启了
Camera权限。
为什么选择 FMXBarcode 而非商业库?
零成本: 它是完全开源的,无需支付昂贵的年度授权费用。
纯正 Delphi 体验: 避免了调用复杂的 C++ DLL 或 Java/OC 桥接,降低了内存泄漏和崩溃的风险。
灵活定制: 开发者可以直接修改源码以支持私有的条码协议或特殊的编码需求。
总结
FMXBarcode 为 Delphi 开发者提供了一个极其便捷的工具集,将复杂的图像处理转化为简单的属性赋值。无论你是需要构建一个简单的库存管理系统,还是一个复杂的物流追踪应用,该项目都能提供稳定且高效的条码处理能力。
项目地址: https://github.com/ivanovsergeyminsk/FMXBarcode



还没有评论,来说两句吧...