Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sumimakito/AwesomeQRCode

An awesome QR code generator for Android.
https://github.com/sumimakito/AwesomeQRCode

List: AwesomeQRCode

qr-code qr-generator qrcode qrcode-generator

Last synced: 5 days ago
JSON representation

An awesome QR code generator for Android.

Awesome Lists containing this project

README

        

> 这篇文档中的内容已经过时,请暂以英文文档的内容为准,谢谢。

Special, thus awesome.

[![](https://jitpack.io/v/SumiMakito/AwesomeQRCode.svg)](https://jitpack.io/#SumiMakito/AwesomeQRCode)
[![release](https://img.shields.io/github/release/SumiMakito/AwesomeQRCode.svg)](https://github.com/SumiMakito/AwesomeQRCode/releases/latest)
[![license](https://img.shields.io/github/license/SumiMakito/AwesomeQRCode.svg)](https://github.com/SumiMakito/AwesomeQRCode/blob/master/LICENSE)
![](https://img.shields.io/badge/made%20with-%3C3-orange.svg)

AwesomeQRCode - 一个优雅的(不起眼的) QR 二维码生成器

> [Swithc to English Version?](README.md)

## 好耶! 演示应用!

Google Play Store

## 样例

> 拿起你的手机扫描下面的二维码试试吧!

样例 1 | 样例 2 | 样例 3
------------ | ------------- | -------------
| |

使用圆点做数据点 | 二值化处理 | 带有 Logo
------------ | ------------- | -------------
| |

## 引用

> 万事开头难, 补全就好啦!

在项目根目录下的 build.gradle 中补充以下内容,以添加依赖项:

```
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```

在应用模块层级下的 build.gradle 中补充以下内容:

```
dependencies {
compile 'com.github.SumiMakito:AwesomeQRCode:1.0.6'
}
```

## 快速上手

### 1. "人家只想要 Bitmap 嘛"

> 原来乃只想要 Bitmap 撒... 满足你!!

这种情况下,二维码将同步(synchronously)生成,这有可能阻塞 UI 线程,引起应用无响应(ANR)问题。因此建议在非 UI 线程中使用。

```java
new Thread() {
@Override
public void run() {
super.run();
Bitmap qrCode = new AwesomeQRCode.Renderer()
.contents("Makito loves Kafuu Chino.")
.size(800).margin(20)
.render();
}.start();
```

### 2. 异步生成二维码并在 ImageView 中显示

```java
new AwesomeQRCode.Renderer()
.contents("Makito loves Kafuu Chino.")
.size(800).margin(20)
.renderAsync(new AwesomeQRCode.Callback() {
@Override
public void onRendered(AwesomeQRCode.Renderer renderer, final Bitmap bitmap) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 提示: 这里使用 runOnUiThread(...) 来规避从非 UI 线程操作 UI 控件时产生的问题。
imageView.setImageBitmap(bitmap);
}
});
}

@Override
public void onError(AwesomeQRCode.Renderer renderer, Exception e) {
e.printStackTrace();
}
});
```

## 渲染流程

```
Bitmap bitmap = new AwesomeQRCode.Renderer() ...
```

### 基本

#### .contents(String)

*必需*

欲编码的内容。

默认为 *null*。

#### .size(int)

*必需*

尺寸,长宽一致,包含外边距。

单位是 *px*。
默认为 *800*。

#### .margin(int)

二维码图像的外边距。

单位是 *px*。

默认为 *20*。

#### .dataDotScale(float)

数据点缩小比例。

默认为 *0.3f*。

#### .roundedDataDots(boolean)

若为 true,数据区域将以圆点绘制。

默认为 *false*。

#### .whiteMargin(boolean)

若设为 true,背景图外将绘制白色边框。

默认为 *true*。

### 后处理

#### .binarize(boolean)

若为 true,图像将被二值化处理。

默认为 *false*。

#### .binarizeThreshold(int)

二值化处理的阈值。

默认为 *128*。

### 颜色

#### .autoColor(boolean)

若为 true,背景图(或 GIF 的每一帧)中的主要颜色将作为非空白区域的颜色。

默认为 *true*。

#### .colorDark(int)

非空白区域的颜色。

默认为 *Color.BLACK*。

#### .colorLight(int)

空白区域的颜色。

默认为 *Color.WHITE*。

### Background

#### .background(Bitmap)

欲嵌入的背景图,设为 null 以禁用。

默认为 *null*。

#### .backgroundGif(File)

*必须是 GIF 类型图片,否则将出错。*

欲嵌入的 GIF 背景图,设为 null 以禁用。

默认为 *null*。

#### .backgroundGifCropRect(RectF)

裁切 GIF 所使用的矩形区域。

默认为 *null*。

#### .saveTo(File)

*设置 backgroundGif 时必须指定。*

生成 GIF QR 二维码的输出文件。

默认为 *null*。

### Logo

#### .logo(Bitmap)

欲嵌入至二维码中心的 Logo,设为 null 以禁用。

默认为 *null*。

#### .logoMargin(int)

Logo 周围的空白边框,设为 0 以禁用。

单位是 *px*。

默认为 *10*。

#### .logoCornerRadius(int)

Logo 及其边框的圆角半径,设为 0 以禁用。

单位是 *px*。

默认为 *8*。

#### .logoScale(float)

用于计算 Logo 大小的比例,过大可能会导致解码问题。

默认为 *0.2f*。

```
... .render(); // 得到 Bitmap
```

### 更新日志

#### 1.1.1 版本

- 修复了上一版本中生成的 QR 二维码图块间出现空白间隙的问题

#### 1.1.0 版本

- 加入 GIF 支持
- 修复既有问题

#### 1.0.6 版本

- 修复 divide by zero 错误

#### 1.0.5 版本

- 使用 AwesomeQRCode 的方式变的更优雅

#### 1.0.4 版本

- 可以在二维码中选择嵌入 Logo
- 演示应用更新

#### 1.0.3 版本

- 在二维码中的 Hints 中加入 CHARACTER_SET => UTF-8
- 修复 [#7](https://github.com/SumiMakito/AwesomeQRCode/issues/7) 中提到的编码问题

#### 1.0.2 版本

- 加入使用圆点绘制二维码数据点的选项

#### 1.0.1 版本

- 加入背景二值化的支持

#### 1.0.0 版本

- 初次发布

## 相关项目

### Swift 下的 EFQRCode

AwesomeQRCode 受 [由 EyreFree 创造的 EFQRCode](https://github.com/EyreFree/EFQRCode) 所启发而生,它是一个轻量级的、用来生成和识别二维码的纯 Swift 库,可根据输入的水印图和图标产生艺术二维码,基于 CoreImage 进行开发。受 qrcode 启发。EFQRCode 为你提供了一种更好的在你的 App 中操作二维码的方式。

### 可在网页使用的 JavaScript 版: Awesome-qr.js

详情请至 [Awesome-qr.js](https://github.com/SumiMakito/Awesome-qr.js)

### 强大的 Kotlin (复刻)版: AwesomeQRCode-Kotlin

更新较慢,不推荐使用。

详情请至 [AwesomeQRCode-Kotlin](https://github.com/SumiMakito/AwesomeQRCode-Kotlin)

## 捐赠

可以请我喝一杯卡布奇诺吗?

PayPal | 支付宝
----|----
[PayPal](https://www.paypal.me/makito) | [支付宝](https://qr.alipay.com/a6x02021re1jk4ftcymlw79)

## 版权信息与授权许可

Apache-2.0 license

AwesomeQRCode is available under the Apache-2.0 license. See the LICENSE file for more info.
Copyright © 2017-2018 Makito.

## 排他性发行协议

包含、引用、修改、再分发或使用本项目,即代表您已阅读并同意本排他性发行协议中的条款。

**当再发行此开源软件时,此协议需与 APACHE 2.0 许可一同提供。**

您**可以**:

- 在项目中使用 AwesomeQRCode(商业与非商业项目皆可)。
- 按需要修改 AwesomeQRCode 的代码。
- 按照本排他性发行协议以及 APACHE 2.0 许可再发行修改后的代码。

您**不可以**:

- 使用 AwesomeQRCode 作为您应用的**主要**或**唯一**功能。
- 将 AwesomeQRCode 的**部分**或**全部**内容作为可销售商品。
- 制作 AwesomeQRCode 的演示应用,并提交至商店(包括但不限于 Google Play Store)。