diff --git a/OAT.xml b/OAT.xml index b25d49e1dfc798bd9150fb0abb6450d087355163..afbed54676195f6dff0166fc08d13f6098492ec1 100644 --- a/OAT.xml +++ b/OAT.xml @@ -46,6 +46,7 @@ + diff --git a/README.md b/README.md index 0f2b641f5b593b3c4a5c19340c4f7442e4e8da6c..f8a32b02e26d0e3a7f018d3fdd7ea87af858066f 100644 --- a/README.md +++ b/README.md @@ -1,80 +1,79 @@ # qr-code-generator -## 简介 ->用于生成符合国际标准的高质量 QR 码。它支持生成包括文本、URL、邮件地址、电话号码等不同类型数据的 QR 码,并且具有灵活的参数设置,能够生成矢量图形以保持图像清晰度,同时具备良好的性能。 -> 支持按照二维码Model 2标准对所有40个版本(尺寸)和所有4个纠错级别进行编码。 -> 输出格式:QR符号的原始模块/像素。 +## Introduction +qr-code-generator generates international standard–compliant QR codes for various data types, including text, URLs, email addresses, and phone numbers. It offers flexible settings to generate vector graphics to maintain image clarity while providing good performance. It supports encoding for all 40 versions (sizes) and all 4 error correction levels according to the QR Code Model 2 standard. + +Output format: raw module/pixel of the QR symbol. ![](screenshot/screenshot.gif) -## 下载安装 +## How to Install ```shell ohpm install @ohos/qr-code-generator ``` -- OpenHarmony ohpm环境配置等更多内容,请参考 [如何安装OpenHarmony ohpm包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md) 。 +- For details about the OpenHarmony ohpm environment configuration, see [OpenHarmony HAR](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.en.md). -## 使用说明 +## How to Use -### 1、创建context: +### 1. Creating a Context ``` Context: CanvasRenderingContext2D = new CanvasRenderingContext2D(new RenderingContextSettings(true)) ``` -### 2、通过canvas设置绘制区域: +### 2. Setting the Drawing Area Using the Canvas ``` Canvas(this.Context).width('80%').height("50%") ``` -### 3、设置二维码显示内容及容错率: +### 3. Setting the QR Code Content and Error Correction Level ``` qrcode: qrcodegen.QrCode = qrcodegen.QrCode.encodeText("Hello, world!", qrcodegen.QrCode.Ecc.MEDIUM) ``` -### 4、绘制二维码: +### 4. Drawing the QR Code ``` qrcode.drawCanvas(8, 1, this.Context) ``` -## 接口说明 -1. 二维码符号类:`qrcodegen.QrCode` - - 获取有效载荷数据:`qrcodegen.QrCode.encodeText()或qrcodegen.QrCode.encodeBinary()` - - 定制片段列表:`qrcodegen.QrCode.encodeSegments()` - - 二维码绘制:`qrcodegen.QrCode.drawCanvas()` +## Available APIs +1. QR code symbol class: **qrcodegen.QrCode** + - Obtain payload data: **qrcodegen.QrCode.encodeText()** or **qrcodegen.QrCode.encodeBinary()** + - Customize a segment list: **qrcodegen.QrCode.encodeSegments()** + - Draw the QR code: **qrcodegen.QrCode.drawCanvas()** -2. 数据段类:`qrcodegen.QrSegment` - - 文本字符串转换为UTF-8字节并编码为字节模式段:`qrcodegen.QrSegment.makeBytes()` - - 以数字模式编码的给定十进制数字字符串:`qrcodegen.QrSegment.makeNumeric()` - - 以字母数字模式编码的给定文本字符串:`qrcodegen.QrSegment.makeAlphanumeric()` - - 一个包含零个或多个段的新可变列表的给定的Unicode文本字符串:`qrcodegen.QrSegment.makeSegments()` - - 具有给定赋值的扩展通道解释(ECI)指示符:`qrcodegen.QrSegment.makeEci()` +2. Data segment class: **qrcodegen.QrSegment** + - Convert a text string to UTF-8 bytes and encode it into a byte mode segment: **qrcodegen.QrSegment.makeBytes()** + - Encode a given decimal digit string in numeric mode: **qrcodegen.QrSegment.makeNumeric()** + - Encode a given text string in alphanumeric mode: **qrcodegen.QrSegment.makeAlphanumeric()** + - Create a new mutable list of segments from a given Unicode text string, which may contain zero or more segments: **qrcodegen.QrSegment.makeSegments()** + - Create an Extended Channel Interpretation (ECI) indicator with a specified assignment value: **qrcodegen.QrSegment.makeEci()** -3. 二维码符号中的错误纠正级别:`qrcodegen.QrCode.Ecc` +3. Error correction levels for QR code symbols: **qrcodegen.QrCode.Ecc** -4. 解释段的数据位:`qrcodegen.QrSegment.Mode` +4. Data modes for interpreting segments: **qrcodegen.QrSegment.Mode** -单元测试用例详情见[TEST.md](https://gitee.com/openharmony-sig/qr-code-generator/TEST.md) +For details about unit test cases, see [TEST.md](https://gitee.com/openharmony-sig/qr-code-generator/TEST.md). -## 约束与限制 -在下述版本验证通过: -- DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API12 Release(5.0.0.66) -- -- DevEco Studio NEXT Developer Preview2: (5.0.3.24), SDK: API12 Canary1(5.0.0.13) +## Constraints +This project has been verified in the following versions: +- DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API 12 Release (5.0.0.66) +- DevEco Studio NEXT Developer Preview2: (5.0.3.24), SDK: API 12 Canary1 (5.0.0.13) -- DevEco Studio: 3.1Beta2(3.1.0.400), SDK: API9 Release(3.2.11.9) +- DevEco Studio: 3.1Beta2 (3.1.0.400), SDK: API 9 Release (3.2.11.9) -## 目录结构 +## Directory Structure ```` |---- qr-code-generator -| |---- entry # 示例代码文件夹 -| |---- qrcodegen # qrcodegen库文件夹 -| |---- index.ets # 对外接口 +| |---- entry # Sample code +| |---- qrcodegen # Library +| |---- index.ets # External APIs | |---- src | |---- main | |---- ets | |---- components -| |---- qrcodegen.ets #二维码生成实现 -| |---- README.md # 安装使用方法 +| |---- qrcodegen.ets # Implementation of QR code generation +| |---- README.md # Readme ```` -## 贡献代码 -使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/qr-code-generator/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/qr-code-generator/pulls) 。 +## How to Contribute +If you find any problem when using the project, submit an [issue](https://gitee.com/openharmony-sig/qr-code-generator/issues) or a [PR](https://gitee.com/openharmony-sig/qr-code-generator/pulls). -## 开源协议 -本项目基于 [MIT License](https://gitee.com/openharmony-sig/qr-code-generator/blob/master/LICENSE) ,请自由地享受和参与开源。 \ No newline at end of file +## License +This project is licensed under [MIT License](https://gitee.com/openharmony-sig/qr-code-generator/blob/master/LICENSE). diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000000000000000000000000000000000000..467e91f696f3033ab1673dadd9c2c5c7374c9914 --- /dev/null +++ b/README_zh.md @@ -0,0 +1,80 @@ +# qr-code-generator + +## 简介 +>用于生成符合国际标准的高质量 QR 码。它支持生成包括文本、URL、邮件地址、电话号码等不同类型数据的 QR 码,并且具有灵活的参数设置,能够生成矢量图形以保持图像清晰度,同时具备良好的性能。 +> 支持按照二维码Model 2标准对所有40个版本(尺寸)和所有4个纠错级别进行编码。 +> 输出格式:QR符号的原始模块/像素。 + +![](screenshot/screenshot_zh.gif) + +## 下载安装 +```shell +ohpm install @ohos/qr-code-generator +``` +- OpenHarmony ohpm环境配置等更多内容,请参考 [如何安装OpenHarmony ohpm包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md) 。 + +## 使用说明 + +### 1、创建context: + ``` +Context: CanvasRenderingContext2D = new CanvasRenderingContext2D(new RenderingContextSettings(true)) + ``` +### 2、通过canvas设置绘制区域: + ``` +Canvas(this.Context).width('80%').height("50%") + ``` +### 3、设置二维码显示内容及容错率: + ``` +qrcode: qrcodegen.QrCode = qrcodegen.QrCode.encodeText("Hello, world!", qrcodegen.QrCode.Ecc.MEDIUM) + ``` +### 4、绘制二维码: + ``` +qrcode.drawCanvas(8, 1, this.Context) + ``` + +## 接口说明 +1. 二维码符号类:`qrcodegen.QrCode` + - 获取有效载荷数据:`qrcodegen.QrCode.encodeText()或qrcodegen.QrCode.encodeBinary()` + - 定制片段列表:`qrcodegen.QrCode.encodeSegments()` + - 二维码绘制:`qrcodegen.QrCode.drawCanvas()` + +2. 数据段类:`qrcodegen.QrSegment` + - 文本字符串转换为UTF-8字节并编码为字节模式段:`qrcodegen.QrSegment.makeBytes()` + - 以数字模式编码的给定十进制数字字符串:`qrcodegen.QrSegment.makeNumeric()` + - 以字母数字模式编码的给定文本字符串:`qrcodegen.QrSegment.makeAlphanumeric()` + - 一个包含零个或多个段的新可变列表的给定的Unicode文本字符串:`qrcodegen.QrSegment.makeSegments()` + - 具有给定赋值的扩展通道解释(ECI)指示符:`qrcodegen.QrSegment.makeEci()` + +3. 二维码符号中的错误纠正级别:`qrcodegen.QrCode.Ecc` + +4. 解释段的数据位:`qrcodegen.QrSegment.Mode` + +单元测试用例详情见[TEST.md](https://gitee.com/openharmony-sig/qr-code-generator/TEST.md) + +## 约束与限制 +在下述版本验证通过: +- DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API12 Release(5.0.0.66) +- +- DevEco Studio NEXT Developer Preview2: (5.0.3.24), SDK: API12 Canary1(5.0.0.13) + +- DevEco Studio: 3.1Beta2(3.1.0.400), SDK: API9 Release(3.2.11.9) + +## 目录结构 +```` +|---- qr-code-generator +| |---- entry # 示例代码文件夹 +| |---- qrcodegen # qrcodegen库文件夹 +| |---- index.ets # 对外接口 +| |---- src +| |---- main +| |---- ets +| |---- components +| |---- qrcodegen.ets #二维码生成实现 +| |---- README_zh.md # 安装使用方法 +```` + +## 贡献代码 +使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/qr-code-generator/issues) 给组件,当然,也非常欢迎发 [PR](https://gitee.com/openharmony-sig/qr-code-generator/pulls) 共建。 + +## 开源协议 +本项目基于 [MIT License](https://gitee.com/openharmony-sig/qr-code-generator/blob/master/LICENSE) ,请自由地享受和参与开源。 \ No newline at end of file diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index a528b5dbc5b96e66c5f38ac1af52ca50ea2763bd..41504ff5743be5b8616ce9c8277cfcbbb658273f 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -38,7 +38,7 @@ struct Index { qrcode.drawCanvas(8, 1, this.SimpleContext) }) .visibility(this.isSimpleVisibility) - Button("显示'Hello, world!'二维码", { type: ButtonType.Normal, stateEffect: true }) + Button($r('app.string.hello'), { type: ButtonType.Normal, stateEffect: true }) .borderRadius(8).width("70%") .onClick(() => { this.isSimpleVisibility = Visibility.Visible @@ -53,7 +53,7 @@ struct Index { qr1.drawCanvas(5, 5, this.ManualContext) }) .visibility(this.isManualVisibility) - Button("显示圆周率二维码", { type: ButtonType.Normal, stateEffect: true }) + Button($r('app.string.pi'), { type: ButtonType.Normal, stateEffect: true }) .borderRadius(8).width("70%") .onClick(() => { this.isManualVisibility = Visibility.Visible diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index de31c30ac5ee64a22e0d5232082f10bc9d065511..aa0f08f253afcffedc5f4e85353f6eaab718698e 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -11,6 +11,14 @@ { "name": "EntryAbility_label", "value": "qrcodegenerator" + }, + { + "name": "hello", + "value": "显示'Hello, world!'二维码" + }, + { + "name": "pi", + "value": "显示圆周率二维码" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json index de31c30ac5ee64a22e0d5232082f10bc9d065511..89b3f72c4e306318b7569b89560732f9ac831c97 100644 --- a/entry/src/main/resources/en_US/element/string.json +++ b/entry/src/main/resources/en_US/element/string.json @@ -11,6 +11,14 @@ { "name": "EntryAbility_label", "value": "qrcodegenerator" + }, + { + "name": "hello", + "value": "QR Code for \"Hello, world\"" + }, + { + "name": "pi", + "value": "QR Code for Pi (π)" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index a3aadc02177f6a71efc3d9d4c70d5c7d879639fa..8aba441e10f8ff81396657bc7bc246669817c7e8 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -11,6 +11,14 @@ { "name": "EntryAbility_label", "value": "qrcodegenerator" + }, + { + "name": "hello", + "value": "显示'Hello, world!'二维码" + }, + { + "name": "pi", + "value": "显示圆周率二维码" } ] } \ No newline at end of file diff --git a/screenshot/screenshot.gif b/screenshot/screenshot.gif index 6522b833e40554d47954df41eac690897d14fe56..79f728e8af872b222b85f2ec5baa0b6a40f01dcf 100644 Binary files a/screenshot/screenshot.gif and b/screenshot/screenshot.gif differ diff --git a/screenshot/screenshot_zh.gif b/screenshot/screenshot_zh.gif new file mode 100644 index 0000000000000000000000000000000000000000..6522b833e40554d47954df41eac690897d14fe56 Binary files /dev/null and b/screenshot/screenshot_zh.gif differ