當我看到別人的二維碼都做的這么炫酷的時候,我心動了!
我也想要一個能夠吸引眼球的二維碼,今天就帶大家一起用 Python 來做一個炫酷的二維碼!
首先要安裝工具 myqr:
pip install myqr
安裝完成后,就可以在命令行中輸入 myqr 查看下使用幫助:
$ myqr --help

可以看出 myqr 有着豐富的參數支持,這里就不再一一解釋,后面使用到會再細說。
簡單用法
首先我們生成一個普通二維碼:
$ myqr "http://weixin.qq.com/r/PnUmPg7E8lONrUpd9yAs" line 16: mode: byte Succeed! Check out your 2-H QR-code: /mnt/d/code/Python/learn/myqr/qrcode.png
這時就會在當前目錄下生成一個名稱為 qrcode.png 的二維碼。
如果 myqr 后面傳入的是普通字符串,那么掃描后會現在字符串。若是一個網址,掃描后會自動跳轉。

大家可以掃描下看看,是不是我們設置的字符串。
需要注意的時,這里的字符串不能指定中文,否則會拋出 ValueError('Wrong words! Make sure the characters are supported!') 的異常。
1、使用 -d 可以控制輸出的文件路徑;
2、使用 -n 控制文件名稱,格式可以是 .jpg、.png、.bmp、.gif;
3、使用 -l 可以控制二維碼的糾錯等級,范圍是L、M、Q、H,從左到右依次升高;
4、使用 -v 控制二維碼的邊長,范圍是 1 至 40,數字越大邊長越大。
生成帶圖片的二維碼
光是二維碼,是否太單調了呢?沒關系,我們能加上我們想要的圖片,使二維碼更具辨識度!
我們可以使用 -p 參數指定圖片,將二維碼與該圖片結合在一起。

想要將上面的圖片結合到二維碼中,可以使用下面的命令來生成:
myqr "http://weixin.qq.com/r/PnUmPg7E8lONrUpd9yAs" -p developer.png

黑白的,似乎不是那么好看,彩色的如何呢? 實現彩色也非常簡單。
如果想要生成彩色的,可以加上參數 -c。

另外,如果想要圖片的對比度和亮度,可以使用參數 -con 控制圖片對比度,1.0 表示原始圖片,更小的值表示更低對比度,更大反之。默認為 1.0;
使用參數 -bri 用來調節圖片的亮度,其余用法和取值與 -con 相同。
生成動態二維碼
其實生成動態二維碼,並沒有想象的那么復雜。
方式與上面的帶圖片的二維碼的生成方式沒有區別,只是將原始圖片換成 .gif 即可!

myqr "http://weixin.qq.com/r/PnUmPg7E8lONrUpd9yAs" -p who.gif -c


Python 代碼中調用的方式生成
from MyQR import myqr
myqr.run('https://www.baidu.com')
## so easy
下面我們來詳細的講解一下 myqr.run() 函數里面的參數
| 參數 | 含義 | 詳細 |
|---|---|---|
| words | 二維碼指向鏈接 | str,輸入鏈接或者句子作為參數 |
| version | 邊長 | int,控制邊長,范圍是1到40,數字越大邊長越大,默認邊長是取決於你輸入的信息的長度和使用的糾錯等級 |
| level | 糾錯等級 | str,控制糾錯水平,范圍是L、M、Q、H,從左到右依次升高,默認糾錯等級為'H' |
| picture | 結合圖片 | str,將QR二維碼圖像與一張同目錄下的圖片相結合,產生一張黑白圖片 |
| colorized | 顏色 | bool,使產生的圖片由黑白變為彩色的 |
| contrast | 對比度 | float,調節圖片的對比度,1.0 表示原始圖片,更小的值表示更低對比度,更大反之。默認為1.0 |
| brightness | 亮度 | float,調節圖片的亮度,其余用法和取值與 contrast 相同 |
| save_name | 輸出文件名 | str,默認輸出文件名是"qrcode.png" |
| save_dir | 存儲位置 | str,默認存儲位置是當前目錄 |
myqr.run(words='https://www.baidu.com', picture='', colorized=True,)
總結
myqr 使用非常簡單,一行代碼就可以生成我們想要的二維碼。另外,還有在 Python 代碼中調用的方式生成,這里就不再贅述。
大家快試試生成自己的專屬炫酷二維碼吧!
======================================================================
myqr不支持中文內容,有中文需要可以用QRCode庫
QRCode 生成二維碼只用一行
import qrcode
qrcode.make("不睡覺干嘛呢").get_image().show() #設置URL必須添加http://
安裝導入QRCode
pip install qrcode #方法多,體量小
QRCode 多種自定義方法
import qrcode
text = input("輸入文字或URL:")
img =qrcode.make(text)
img.save() #保存圖片至本地目錄,可以設定路徑
img.show()
生成添加logo的二維碼
from PIL import Image import qrcode,os def create_qrcode(url,qrcodename): qr = qrcode.QRCode( version=1, # 設置容錯率為最高 error_correction=qrcode.ERROR_CORRECT_H, # 用於控制二維碼的錯誤糾正程度 box_size=8, # 控制二維碼中每個格子的像素數,默認為10 border=1, # 二維碼四周留白,包含的格子數,默認為4 #image_factory=None, 保存在模塊根目錄的image文件夾下 #mask_pattern=None ) qr.add_data(url) # QRCode.add_data(data)函數添加數據 qr.make(fit=True) # QRCode.make(fit=True)函數生成圖片 img = qr.make_image() img = img.convert("RGBA") # 二維碼設為彩色 logo = Image.open('xx.jpg') # 傳gif生成的二維碼也是沒有動態效果的 w , h = img.size logo_w , logo_h = logo.size factor = 4 # 默認logo最大設為圖片的四分之一 s_w = int(w / factor) s_h = int(h / factor) if logo_w > s_w or logo_h > s_h: logo_w = s_w logo_h = s_h logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS) l_w = int((w - logo_w) / 2) l_h = int((h - logo_h) / 2) logo = logo.convert("RGBA") img.paste(logo, (l_w, l_h), logo) img.show() img.save(os.getcwd()+'/' + qrcodename + '.png', quality=100)
