ZBLOG

zxing

ZXing(Zebra Crossing)简介

ZXing(发音为 “Zebra Crossing”)是一个开源的条形码/二维码处理库,支持多种格式的编解码,适用于 Java、Android、C++ 等平台。


1. 支持的条码格式

解码(读取)支持:

  • QR Code
  • Data Matrix
  • Aztec
  • PDF417
  • UPC-A / UPC-E
  • EAN-8 / EAN-13
  • Code 39 / Code 93 / Code 128
  • ITF (Interleaved 2 of 5)

编码(生成)支持:

主要支持 QR Code、Data Matrix、Aztec、PDF417、UPC/EAN 等常用格式。


2. ZXing 的核心组件

模块 语言 适用场景
core Java 核心编解码逻辑
javase Java PC端Java应用(如Swing/AWT扫码)
android-core Java (Android) Android扫码集成
cpp C++ C++版解码器(部分功能)

3. ZXing Android 集成示例

(1) Gradle依赖

  1. dependencies {
  2. implementation 'com.google.zxing:core:3.5.2'
  3. implementation 'com.journeyapps:zxing-android-embedded:4.3.0' // UI封装库(可选)
  4. }

(2) Kotlin/Java调用示例

扫描二维码:

  1. val integrator = IntentIntegrator(this)
  2. integrator.setPrompt("Scan a QR Code")
  3. integrator.setOrientationLocked(false)
  4. integrator.initiateScan()

生成二维码:

  1. import com.google.zxing.BarcodeFormat
  2. import com.google.zxing.MultiFormatWriter
  3. fun createQRCode(content: String, width: Int, height: Int): Bitmap {
  4. val bitMatrix = MultiFormatWriter().encode(
  5. content,
  6. BarcodeFormat.QR_CODE,
  7. width,
  8. height
  9. )
  10. val pixels = IntArray(width * height)
  11. for (y in 0 until height) {
  12. for (x in 0 until width) {
  13. pixels[y * width + x] = if (bitMatrix[x, y]) Color.BLACK else Color.WHITE
  14. }
  15. }
  16. return Bitmap.createBitmap(pixels, width, height, Bitmap.Config.RGB_565)
  17. }

4. ZXing C++版使用

ZXing提供C++版本 (zxing-cpp),适合跨平台开发:

  1. git clone https://github.com/zxing-cpp/zxing-cpp.git
  2. cd zxing-cpp && mkdir build && cd build
  3. cmake .. && make -j4

示例代码:读取图片中的条码

  1. #include <zxing/BarcodeFormat.h>
  2. #include <zxing/MultiFormatReader.h>
  3. #include <zxing/ImageSource.h>
  4. auto image = ImageSource::load("qrcode.png");
  5. auto reader = MultiFormatReader();
  6. auto result = reader.read(*image);
  7. std::cout << "Decoded Text: " << result.text() << std::endl;

5. ZXing vs OpenCV vs MLKit

特性 ZXing OpenCV Google ML Kit
主要用途 条码解析 CV通用算法 AI+条码识别
速度 ⚡️快 🐢慢 ⚡️快
离线能力 ✅是 ✅是 ❌需Google Play服务

👉 推荐选择:

  • Android优先用ZXing或ML Kit。
  • C++跨平台选ZXing-CPP。

6. FAQ常见问题

Q1: ZXin能识别模糊的二维码吗?
→ A1: ZXin对低分辨率或部分遮挡的条码识别较弱,可尝试预处理图像(如锐化)。

Q2: iOS能用ZXin吗?
→ A2: iOS建议用原生 AVFoundation + CIDetector,或跨平台的 Swift port

❓ Q3: Web端如何集成? → A3: JS版可用 @zxing/library


官方GitHub:https://github.com/zxling/zxin


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23631

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?