Python | 一行命令生成動態二維碼


當我看到別人的二維碼都做的這么炫酷的時候,我心動了!

我也想要一個能夠吸引眼球的二維碼,今天就帶大家一起用 Python 來做一個炫酷的二維碼!

首先要安裝工具 myqr:

pip install myqr

安裝完成后,就可以在命令行中輸入 myqr 查看下使用幫助:

$ myqr --help

myqr參數

可以看出 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM