# quick_response_code
**Repository Path**: _seraph/quick_response_code
## Basic Information
- **Project Name**: quick_response_code
- **Description**: 对 Google 的 ZXing 中的二维码进行简单封装
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2016-09-04
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 对`com.google.zxing`的`QRCode`进行封装
### 主要封装内容
- 通过`QRCodeBuilder`配置`QRCode`
- 通过`QRCode`实现将二维码写到文件或者输出流中
- 借助`QRCodeDecoder`对二维码文件进行解析
### 简单使用
#### 指定二维码内容
```java
QRCode qrCode = new QRCodeBuilder()
.content("https://github.com/Reka-Downey/qrcode")
.create();
qrCode.writeTo(new File("F:/qrCode.png"));
```
生成的二维码为:

#### 指定二维码内容和图片`logo`文件
```java
QRCode qrCode = new QRCodeBuilder()
.size(400)
.withImageType(ImageType.JPEG)
.content("https://github.com/Reka-Downey/qrcode")
.logo(new File("F:/logo.jpg"))
.logoRectangle()
.logoLocation(LogoLocation.RIGHT_BOTTOM)
.create();
qrCode.writeTo(new File("F:/qrCode.jpg"));
```
`logo`文件:

生成的二维码为:

#### 由文本生成`logo`,注意此时不可以添加图片`logo`,否则默认将优先使用图片`logo`
```java
LabelConfig labelConfig = new LabelConfig.Builder()
.font(new Font("Lucida Sans Typewriter", Font.PLAIN, 40))
.create();
QRCode qrCode = new QRCodeBuilder()
.size(400)
.withImageType(ImageType.GIF)
.content("https://github.com/Reka-Downey/qrcode")
.labelAsLogo("Reka Downey")
.labelLogoConfig(labelConfig)
.logoRectangle()
.logoLocation(LogoLocation.RIGHT_CENTER)
.create();
qrCode.writeTo(new File("F:/qrCode.gif"));
```
生成的二维码为

#### 由二维码文件解析内容
```java
Result result = QRCodeDecoder.decode(new File("F:/qrCode.gif"));
System.out.println(result.getText());
```
此时解析出来的内容为:`https://github.com/Reka-Downey/qrcode`
### 存在问题
+ `LogoLocation`定位时受`ImageMargin`(二维码留白区域)等因素影响导致不准确;
+ 当需要对`logo`进行收缩处理时,收缩操作有问题