【OpenHarmony】二维码的库:zxing

140 阅读4分钟

简介

zxing是一个解析/生成一维码/二维码的库。

支持的码格式

其中QR_CODE、DATA_MATRIX、AZTEC、PDF_417、MAXICODE生成和解码时传入的宽高不支持小数

1D product1D industrial2D
UPC-ACode 39QR Code
UPC-ECode 93Data Matrix
EAN-8Code 128Aztec
EAN-13CodabarPDF 417
RSS-14ITFMaxiCode
RSS-Expanded

下载安装

ohpm install @ohos/zxing 

使用说明

解码

import {MultiFormatReader, BarcodeFormat, DecodeHintType, RGBLuminanceSource, BinaryBitmap, HybridBinarizer } from "@ohos/zxing";
const hints = new Map();
const formats = [BarcodeFormat.QR_CODE];
hints.set(DecodeHintType.POSSIBLE_FORMATS, formats);
const reader = new MultiFormatReader();
reader.setHints(hints);
const luminanceSource = new RGBLuminanceSource(luminances, width, height);
const binaryBitmap = new BinaryBitmap(new HybridBinarizer(luminanceSource));
let result = reader.decode(binaryBitmap);
let text = result.getText();

编码

import {BarcodeFormat, MultiFormatWriter, BitMatrix, ZXingStringEncoding, EncodeHintType} from '@ohos/zxing';
 const encodeHintTypeMap = new Map();
 //设置二维码边空白的宽度
 encodeHintTypeMap.set(EncodeHintType.MARGIN, 0);
 const writer: MultiFormatWriter = new MultiFormatWriter();
 let matrix: BitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, encodeHintTypeMap);

OpenHarmony上是用image组件显示图片的,所以需要将matrix转化成pixelMap这样才可以显示在image组件上面。

1.需要将matrix转成pixelMap的buffer。

2.在根据这个buffer去创建pixelMap。

3.输入的解析生成码的一些限制:

codabar只能是数字

ena8 只能是7位数字

ena13只能是12位数字

ITF码只能是数字,且需要双数,长度要>=6才能解析生成码

upcA只能数字,且长度只能是11位。

upcE只能数字,且长度只能是7位

具体操作细节可以看demo代码,主要转换逻辑都封装在imageUtils工具类中。

接口列表

编码

类名方法名功能
QRCodeWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成QRCode码。
DataMatrixWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成DataMatrix码。
AztecWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成Aztec码。
PDF417Writerencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成PDF417码。
Code39Writerencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成Code39码。
Code93Writerencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成Code93码。
Code128Writerencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成Code128码。
CodaBarWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成CodaBar码。
ITFWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成ITF码。
UPCAWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成UPCA码。
UPCEWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成UPCE码。
EAN8Writerencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成EAN8码。
EAN13Writerencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix生成EAN13码。
MultiFormatWriterencode(contents: string,format: BarcodeFormat,width: int,height:int,hints: Map<EncodeHintType, any>): BitMatrix这是一个工厂类方法,它为请求的条形码/二维码格式找到适当的编写器子类,并使用提供的内容编码二维码/条形码。

DD一下:欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。

`欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点学习。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

解码

类名方法名功能
QRCodeReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析QRCode码。
DataMatrixReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析DataMatrix码。
AztecReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析Aztec码。
PDF417Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析PDF417码。
MaxiCodeReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析MaxiCode码。
Code39Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析Code39码。
Code93Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析Code93码。
CodaBarReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析CodaBar码。
Code128Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析Code128码。
ITFReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析ITF码。
UPCAReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析UPCA码。
UPCEReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析UPCE码。
EAN8Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析EAN8码。
EAN13Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析EAN13码。
RSS14Readerdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析RSS14码。
RSSExpandedReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;解析RSSExpanded码。
MultiFormatReaderdecode(image: BinaryBitmap, hints?: Map<DecodeHintType, any> | null): Result;这是一个工厂类方法,它为请求的条形码/二维码格式找到适当的解码器子类,并使用提供的内容解码二维码/条形码。

相机组件

组件名名
CameraView

CameraService

类名方法名功能
init(context:Context)CameraService.getInstance().init(getContext())打开相机并初始化
destroyCameraService.getInstance().destroy()关闭相机
releaseCameraService.getInstance().release()释放

GlobalContext

类名方法名功能
setObjectGlobalContext.getContext().setObject("key",value)设置值
getObjectGlobalContext.getContext().getObject("key")获取值

约束与限制

在下述版本验证通过: DevEco Studio: 5.0 (5.0.3.122), SDK: API12 (5.0.0.17)

DevEco Studio: 4.1 Canary(4.1.3.322), SDK: API11 (4.1.0.36)

DevEco Studio: 4.1 Canary(4.1.3.220), SDK: API11 (4.1.2.1)

DevEco Studio: 4.0 Beta2(4.0.3.500), SDK: API10 (4.0.10.7)

DevEco Studio: 4.0 Canary2(4.0.3.317), SDK: API10 (4.0.9.5)

DevEco Studio: 3.1 Beta2(3.1.0.400), SDK: API9 Release(3.2.11.9)

项目目录

|---- Zxing  
|     |---- entry  # 示例代码文件夹
|     |---- library  # zxing库文件夹
|           |---- index.ets  # 对外接口
|     |---- README.md  # 安装使用方法    
|     |---- README_zh.md  # 安装使用方法