当前位置: 首页 > news >正文

ZXing:一个扫描条码的基础库

文章目录

  • ZXing:一个扫描条码的基础库
    • 这个库能干什么
    • 为什么要用它
    • 移植到其他语言
    • 怎么用
    • 现在的状态
    • 适合什么场景

ZXing:一个扫描条码的基础库

zxing 在 GitHub 上拿了 33,996 Star。

Google 开源的这个库,专门做一件事,识别和解码各种格式的条形码和二维码。Java 写的,但已经被移植到几乎所有主流语言平台。

这个库能干什么

一句话:把图片里的条码信息读出来。

支持的格式覆盖面很广。一维码包括 UPC-A、UPC-E、EAN-8、EAN-13、Code 39、Code 93、Code 128、Codabar、ITF 这些常见的商品码和工业码。二维码包括 QR Code、Data Matrix、Aztec、PDF 417、MaxiCode,还有 RSS-14 和 RSS-Expanded。

基本上你在超市货架、快递包裹、登机牌、证件上看到的码,它都能识别。

为什么要用它

做过条码识别功能的开发者都知道,自己写一套解码逻辑有多麻烦。光照不均匀、角度倾斜、印刷模糊、多种码制混用,每一种情况都要单独处理。ZXing 把这些底层问题都解决了,你只需要传一张图片进去,它返回解码结果。

库本身是 Java 写的,模块拆得很清晰。core 是核心解码逻辑,javase 处理 JavaSE 平台的图像加载,android 是 Android 客户端,android-integration 通过 Intent 让其他 App 调用扫码功能。每个模块各司其职,按需引入。

移植到其他语言

ZXing 原生是 Java,但社区把它搬到了几乎所有你能想到的语言平台。

C++ 移植有两个主要版本,一个是 glassechidna/zxing-cpp,另一个是更活跃的 zxing-cpp/zxing-cpp,后者还提供了 Android、C、iOS、.NET、Rust、Python、WASM 和 WinRT 的绑定。.NET 平台有 ZXing.Net,TypeScript 有 zxing-js/library,Python 有 pyzxing,Rust 有 rxing,Dart 有 zxing-dart,PHP 有两个版本的移植,Ruby 有 zxing_cpp.rb,Delphi 有 ZXing.Delphi,Objective-C 有 ZXingObjC。

基本上不管你用什么技术栈,都能找到对应的版本。

怎么用

以 Java 为例,Maven 引入 core 和 javase 两个模块就行。调用方式也简单,读取图片文件,创建 MultiFormatReader,调用 decode 方法,拿到 Result 对象,里面就是解码后的文本内容。

Android 上可以通过 Intent 集成,不用自己写扫码界面。用户点一个按钮,跳到 ZXing 的扫码 Activity,结果通过 onActivityResult 回传。

现在的状态

这个项目目前处于维护模式。只接受 bug 修复和小改进,没有新功能开发计划。Android 端的 Barcode Scanner 应用已经不适配 Android 14,也不会再更新了。

但维护模式不代表没价值。它的核心解码算法被大量第三方项目依赖,很多扫码功能的底层都是 ZXing。那些语言移植版本也在持续更新,zxing-cpp/zxing-cpp 这个 C++ 版本的活跃度就很高。

适合什么场景

  • 需要在应用里加条码识别功能,不想自己写解码算法的开发者
  • 做物联网、物流、零售系统,需要批量处理条码数据的场景
  • 用的技术栈不是 Java,但需要条码识别能力的团队,可以找对应语言的移植版本
  • 需要同时支持多种码制,不想为每种码单独集成库的项目

33,996 Star 不是白给的。十几年的打磨,覆盖了市面上绝大多数码制,社区移植版本遍布各语言平台。就算原项目不再活跃开发,它依然是条码识别这个领域里最稳的选择之一。

多数码制,社区移植版本遍布各语言平台。就算原项目不再活跃开发,它依然是条码识别这个领域里最稳的选择之一。

http://www.gsyq.cn/news/1618332.html

相关文章:

  • ICM-42688-P与PIC18F4553在机器人控制与工业监测中的应用
  • 类比StandardServer, 抓住StandardService整体类依赖结构来理解
  • 【节点】[Clamp节点]原理解析与实际应用
  • Kubernetes 核心机制与运维实践知识精要
  • ROS2基本操作指令:从“节点”到“机器人”的完整工具箱
  • 重庆市二手房价格数据分析与可视化系统
  • 墨香情手游官方下载:2026 国风武侠手游优选正版高速官方下载通道
  • .NET与AI Agent深度集成开发实战
  • 2026年国内热门工艺品设计资讯平台推荐,这份排行榜别错过!
  • 既需要大规模HPC 集群,有需要QPU参与的计算问题
  • 企业 AI 安全防护实战:Prompt Injection、RAG Injection 与 Agent 工具越权排查清单
  • 热榜来袭!外贸工艺品资讯平台哪家强?口碑排行榜揭秘
  • 记录一个免杀的php webshell demo
  • [Remap节点]原理解析与实际应用
  • 数据库SQL查询语句学习心得
  • 用 Python 画三类论文级图表:分组柱状图、双轴折线图与多面板图(解决中文乱码)
  • NFD云解析插件扩展架构深度解析:从接口设计到实战实现
  • 在微服务中使用领域事件
  • 如何快速修复ClusterGVis中箱线图与折线图显示冲突问题
  • 心情值游戏系统实现
  • 【MO三维路径规划】麝牛算法MO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)【含Matlab源码 15684期】
  • [特殊字符] 搬砖的秘密:为什么一次搬 64 块砖最快?
  • 本地化AI漫剧制作:Qwen与ComfyUI实战指南
  • 一个老股民的十年自白十年炒股没亏,但我劝你别学我
  • Rust项目开发完整教程
  • 车间地坪养护秘籍
  • MAX9744与PIC18LF45K50的音频功率放大系统设计
  • 出现“WSL 安装似乎已损坏”的错误通常意味着Windows子系统对于Linux(WSL)的某些组件可能未正确安装或注册。要解决这个问题,你可以尝试以
  • 【新品发布】AI PC快充防护再进阶!艾为电子推出Type‑C OVP系列产品
  • Harness Engineering 实践案例:如何Agent 写一份行为规范