Duyuxuan 发表于 2024-7-6 12:36:10

格局小了,原来python还能这样玩,qrcode+myqr生成QR code二...


# 前言

众所周知python上天入地无所不能
所以生成二维码这种小事当然不在话下

# qrcode

我们可以通过qrcode来生成二维码,并且它可以生成中文等语言的二维码,可是生成出来的二维码却很普通,丝毫没有一点儿个性。

> 官方文档(https://pypi.org/project/qrcode/)

## 安装

qrcode是python的第三方库
可以直接用pip下载

```powershell
pip install qrcode
pip install qrcode
```

[如果不会安装库 点我!!!点我!!!](https://blog.csdn.net/weixin_53024080/article/details/119114602)
qrcode可以使我们在cmd命令行就能生成二维码
安装后可以开始生成二维码

## 终端使用

```powershell
qr "Some text" > test.png
```

"Some text" 是你二维码扫出来的文字或网站(注:网站要完整如:https://www.baidu.com/,否则不能跳转到网站)
test.png 是你输出的文件名和后缀

![二维码](https://img-blog.csdnimg.cn/fc2261dfcd16433f8c3064cc3c7e32b6.png#pic_center)

## Python代码

### 简单使用

```python
#生成
import qrcode
img = qrcode.make('Some text')#二维码的内容:文字或网站(注:网站要完整如:https://www.baidu.com/)
#保存
img.save('test.jpg')#输出的保存路径、文件名和后缀
#显示
img.show()
```

> 此处并没有使用add_data()添加数据,make_image()生成二维码,而是使用qrcode.make(data)的方式获取im对象。qrcode.make()是qrcode提供简单调用接口。下一章我们再介绍

### 高级用法

```python
import qrcode

# 实例化QRCode生成qr对象
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4
)
# 导入数据
qr.add_data('Some text')#二维码的内容:文字或网站(注:网站要完整如:https://www.baidu.com/)

qr.make(fit=True)

# 生成
img = qr.make_image(fill_color="black", back_color="white")
# 保存
img.save(img_file)
# 显示
img.show()
```

#### QRCode参数详细说明:

- version: 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为None 并使用 fit=True 参数即可。
- error_correction: 二维码的纠错范围,可以选择4个常量:
   1. ERROR_CORRECT_L 大约可以纠正 7% 或更少的错误。
      2. ERROR_CORRECT_M(默认) 大约 15% 或更少的错误可以被纠正。
      3. ERROR_CORRECT_Q 大约 25% 或更少的错误可以被纠正。
         4. ERROR_CORRECT_H 大约可以纠正 30% 或更少的错误。
- boxsize: 每个点(方块)中的像素个数
- border:二维码距图像外围边框距离,默认为4,而且相关规定最小为4

### 设置颜色

**fill_color**和**back_color**可以更改 QR 的背景和绘画颜色。

> 这两个参数都接受 RGB 颜色元组,官方是这么说的,但本人亲测不行

可以用颜色的单词(如:black,green)

```python
img = qr.make_image(back_color="green", fill_color="black")
```

![二维码](https://img-blog.csdnimg.cn/f2011f05ad834443b2dffb9c119e2bca.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzAyNDA4MA==,size_16,color_FFFFFF,t_70#pic_center)

# myqr

MyQR是一个能够生成自定义二维码的python第三方库,根据需要能够生成普通二维码、带背景图片的艺术二维码、动态二维码。它比起 qrcode 生成的二维码可漂亮多了,美中不足的是它只可以生成 English(英语) 的二维码
,不可以生成中文二维码
它支持的字符有

>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ··,.:;+-*/\~!@#$%^&`'=<>[]()?_{}|

> 官方文档 (https://pypi.org/project/MyQR/)

## 安装

myqr也是python的第三方库
可以直接用pip下载

```powershell
pip install myqr
```

[如果不会安装库 点我!!!点我!!!](https://blog.csdn.net/weixin_53024080/article/details/119114602)

安装后可以开始生成二维码

## 终端使用

```powershell
myqr words [-h] [-v {1,2,3,...,40}] [-l {L, M, Q , H}] [-p image_filename] [-c] [-con contrast_value] [-bri Bright_value] [-n output_filename] [-d output_directory]
```

### 参数功能

#### 必填参数

- words 二维码扫描的结果,也就是内容

#### 可选参数(可选!!可以不填!!)

| 参数 | 内容                                       | 含义                                                         |
| ---- | ------------------------------------------ | ------------------------------------------------------------ |
| -h   | (无内容)                                 | 显示帮助消息并退出,无法与其他参数同时调用                   |
| -v   | {1,2,3,4,5,6,·······39,40}               | 二维码图片一侧的长度。从小到大是1到40。(建议不要超过20)    |
| -l   | {l,M,Q,H}                               | 错误更正级别:L(低)、M(中)或Q(四分位)、H(高,默认)。否则,只需默认为:H |
| -p   | '.jpg'、'.png'、'.bmp'、'.gif'中的一个结尾 | 图片                                                         |
| -c   | (无内容)                                 | 彩色生成带有图片的彩色二维码。只有在有正确的'-p'或'-picture'时才起作用。 |
| -con | 这个值没有限制,默认值:1.0                | 对比度,控制对比度增强的浮点值。因子1.0始终返回原始图像的副本。 |
| -bri | 这个值没有限制。默认值:1.0                | 亮度,控制亮度增强的浮点值。1.0始终返回原始文件的副本。      |
| -n   | '.jpg'、'.png'、'.bmp'、'.gif'中的一个结尾 | 输出的文件名                                                 |
| -d   | 目录                                       | 输出目录                                                   |

### 实例

```powershell
myqr "words" -v 10 -l L -p "1.png" -c -con 1.0 -bri 1.0 -n "2.png" -d "C:\Users\admin\Desktop"
```

**1.png**
!(https://img-blog.csdnimg.cn/9083473352b94aa3a630bbb7a6e038e6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzAyNDA4MA==,size_16,color_FFFFFF,t_70#pic_center)
**2.png**
!(https://img-blog.csdnimg.cn/5e7f24adebdf4615b4f66b18bba9ffab.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzAyNDA4MA==,size_16,color_FFFFFF,t_70#pic_center)
由于静态和动态的二维码差别不大,只是图片变成了动态的,输出的后缀是 gif

## Python代码

> 值得注意的是 myqr 无法使用相对路径,因此可以使用 os 库中的 getcwd 来获取绝对路径

```python
from MyQR import myqr
import os
version, level, qr_name = myqr.run("words",version = 1,level = 'H',picture = None,colorized = False,contrast = 1.0,brightness = 1.0,save_name = None,save_dir = os.getcwd())
```

#### 必填参数

-words str 二维码扫描的结果,也就是内容

#### 可选参数(可选!!可以不填!!)

| 参数       | 内容                                       | 含义                                                         |
| ---------- | ------------------------------------------ | ------------------------------------------------------------ |
| version    | {1,2,3,4,5,6,·······39,40}               | **int**,二维码图片一侧的长度。从小到大是1到40。(建议不要超过20) |
| level      | {l,M,Q,H}                               | **str**,错误更正级别:L(低)、M(中)或Q(四分位)、H(高,默认)。否则,只需默认为:H |
| picture    | '.jpg'、'.png'、'.bmp'、'.gif'中的一个结尾 | **str**,图片                                                |
| colorized| True,False                              | **bool**,彩色生成带有图片的彩色二维码。只有在有正确的'-p'或'-picture'时才起作用。 |
| contrast   | 这个值没有限制,默认值:1.0                | **float**,对比度,控制对比度增强的浮点值。因子1.0始终返回原始图像的副本。 |
| brightness | 这个值没有限制。默认值:1.0                | **float**,亮度,控制亮度增强的浮点值。1.0始终返回原始文件的副本。 |
| save_name| '.jpg'、'.png'、'.bmp'、'.gif'中的一个结尾 | **str**,输出的文件名                                        |
| save_dir   | 目录                                       | **str**,输出目录                                          |

由于静态的二维码在终端那里已经演示过了,所有不在演示。

> 注:图片是 gif 记得把输出也改成 gif

```python
from MyQR import myqr
import os
img = myqr.run("words",version = 1,level = 'H',picture = "1.gif",colorized = True,contrast = 1.0,brightness = 1.0,save_name = "2.gif",save_dir = os.getcwd())
```

**1.gif**
!(https://img-blog.csdnimg.cn/18c851f46da84979b63bb88dd962613d.gif#pic_center)
**2.gif**
!(https://img-blog.csdnimg.cn/7b909fb68d6c45598c2f1c15e97a7dea.gif#pic_center)


# 广告

求求大家关注我吧!
点个赞吧!!!!!
转发一下吧!!!!
什么都不做一下,就走了
难道你们的良心不会痛吗?
[我的主页](https://blog.csdn.net/weixin_53024080)
![点赞](https://img-blog.csdnimg.cn/f4480e595a5b4cefa7ed2fb58350dd10.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzAyNDA4MA==,size_16,color_FFFFFF,t_70#pic_center)
![三连](https://img-blog.csdnimg.cn/b39fdb0a55fa4c40ba1397a1548999b1.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzAyNDA4MA==,size_16,color_FFFFFF,t_70#pic_center)

# 推荐阅读

> 1. (https://blog.csdn.net/weixin_53024080/article/details/119114602)
> 2. [手把手教你安装Python3.x](https://blog.csdn.net/weixin_53024080/article/details/119139122)

auroraAA 发表于 2024-7-8 14:36:35

图片裂了 看看可以再上传一下
页: [1]
查看完整版本: 格局小了,原来python还能这样玩,qrcode+myqr生成QR code二...