鸿蒙开发仓颉语言:图像处理库 —— QRCode4cj
采用模块化设计,包含源码、测试用例及示例代码目录。提供解码/编码功能示例,测试通过率达100%,执行时间约2.3ms/用例。
·
📌往期推文全新看点(文中附带最新·鸿蒙全栈学习笔记)
📃 鸿蒙(HarmonyOS)北向开发知识点记录~
📃 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
📃 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
📃 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
📃 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
📃 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
📃 记录一场鸿蒙开发岗位面试经历~
📃 持续更新中……
介绍
一个解析/生成一维码/二维码的库。 支持的格式如下:
- 生成、解析 QRCode
- 生成、解析 Data Matrix
- 生成、解析 PDF417 barcode
- 生成、解析 Aztec barcode
- 生成、解析 codeBar
- 生成、解析 code128
- 生成、解析 code39
- 生成、解析 code93
- 生成、解析 EAN13
- 生成、解析 EAN8
- 生成、解析 ITF
- 生成、解析 UPC-A
- 生成、解析 UPC-E
- 解析 UPC/EAN
- 解析 MaxiCode
- 解析 RSS barcode(RSS-14、RSS-Expanded)
特性
-
🚀 可根据实际场景需求生成或解析一维或二维码
-
🚀 可在终端设备相机扫描解析一维或二维码
架构
源码目录
.
├── README.md
├── doc
├── src
└── test
├── HLT
├── LLT
└── DOC
doc存放库的设计文档、提案、库的使用文档src存放库源码目录test/HLT存放HLT用例test/LLT存放LLT用例test/DOC存放示例代码
使用说明
编译(win/linux)
cjpm build
功能示例
解码功能示例:
示例代码如下: 额外依赖 bitMatrixToBinaryBitmap 转换代码在 test/DOC/libs.cj
import QRCode4cj.common.*
import QRCode4cj.common.reader.*
import QRCode4cj.common.writer.*
import QRCode4cj.tools.UTF32String
import std.collection.*
import std.unittest.*
import std.unittest.testmacro.*
main(): Int64 {
let tester = DecoderTestCase()
tester.execute()
tester.printResult()
tester.getTestInfo().errorCount + tester.getTestInfo().failedCount
}
@Test
public class DecoderTestCase {
@TestCase
public func testDecode(): Unit {
var content = "ABCDEF"
var mfw = MultiFormatWriter();
var bitMatrixAfterEncode: BitMatrix = mfw.encode(content, BarcodeFormat.AZTEC, 30, 30)
var bitmap = bitMatrixToBinaryBitmap(bitMatrixAfterEncode, bitMatrixAfterEncode.getWidth(),
bitMatrixAfterEncode.getHeight())
var hintType: DecodeHintType = DecodeHintType.TRY_HARDER
var hints: HashMap<DecodeHintType, Any> = HashMap<DecodeHintType, Any>()
hints.put(hintType, true)
var reader: MultiFormatReader = MultiFormatReader()
var result = reader.decode(bitmap, hints)
@Assert(content, result.getText())
}
}
执行结果如下:
[ PASSED ] CASE: testDecode (2342200 ns)
编码功能示例:
示例代码如下:
import QRCode4cj.common.*
import QRCode4cj.common.writer.*
import std.unittest.*
import std.unittest.testmacro.*
main(): Int64 {
let tester = EncoderTestCase()
tester.execute()
tester.printResult()
tester.getTestInfo().errorCount + tester.getTestInfo().failedCount
}
@Test
public class EncoderTestCase {
@TestCase
public func testEncode(): Unit {
var mfw = MultiFormatWriter();
var res:BitMatrix = mfw.encode("ABCDEF", BarcodeFormat.QR_CODE, 21, 21)
var expected = """
X X X X X X X X X X X X X X X X X X
X X X X X X
X X X X X X X X X X X X X
X X X X X X X X X X X X X
X X X X X X X X X X X X
X X X X X X X X
X X X X X X X X X X X X X X X X X
X X
X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X
X X X X X X X X X
X X X X X X X X X X X
X X X X X X X X X X X
X X X X X X X
X X X X X X X X X X X X
X X X X X X X X
X X X X X X X X X X X X X X
X X X X X X X X X X X
X X X X X X X X X X X X
X X X X X
X X X X X X X X X X X X
"""
@Assert(expected, res.toString())
}
}
执行结果如下:
[ PASSED ] CASE: testEncode (2362800 ns)
更多推荐
所有评论(0)