用 Python 制作炫酷吊炸天的二維碼!
各種酷炫二維碼的介紹
當(dāng)今社會,二維碼用的地方越來越多了。你的微信二維碼,微信付款嗎、支付寶付款碼,這基本成了每個(gè)人的必備品了。
今天這篇文章,就帶著大家制作幾款二維碼,分別是:靜態(tài)二維碼、單圖動態(tài)二維碼、多圖動態(tài)二維碼。

下面先來看看最終的效果:
① 單圖動態(tài)二維碼
② 靜態(tài)二維碼
③ 多圖動態(tài)二維碼
自己開發(fā)的二維碼生成器
這款“二維碼生成器”工具,我已經(jīng)開發(fā)出來。下面給大家簡單介紹一下它的用法。
首先,打開我個(gè)人開發(fā)的二維碼生成器,如下圖所示。

接著,輸入二維碼要保存的網(wǎng)址、二維碼保存位置,以及動圖所在位置。
最后,點(diǎn)擊“生成二維碼”,即可看到最終生成的效果!
從下圖可以看到,這張動態(tài)二維碼已經(jīng)生成。

開發(fā)代碼
這么酷炫的工具是怎么開發(fā)出來的呢?廢話不多說,直接上代碼吧!
__author__ = 'xiaoxiaoming'
import PySimpleGUI as sg
from MyQR import myqr
sg.change_look_and_feel("LightBlue")
layout = [
[sg.Text("請輸入二維碼的網(wǎng)址或英文字符串(不支持中文):")],
[sg.In(size=(60, 1), key="words")],
[sg.Text("圖片保存位置(文件名以底圖為準(zhǔn)):")],
[sg.In(size=(53, 1), key="save_path"), sg.FolderBrowse('游覽', target='save_path')],
[sg.Text("底圖所在位置(不傳表示不設(shè)置底圖,支持多選會同時(shí)生成多張二維碼):")],
[sg.In(size=(53, 1), key="bg_filename"), sg.FilesBrowse('游覽', target='bg_filename')],
[sg.Button('生成二維碼', enable_events=True, key="start")],
[sg.Text(size=(50, 3), text_color='red', key="out", text='底圖設(shè)置一張gif動圖即可生成動態(tài)二維碼')],
[sg.Image(key="-IMAGE-")],
]
window = sg.Window("動態(tài)二維碼生成器(小小明個(gè)人開發(fā))", layout)
def create_qr(words, save_path, picture):
if picture == "":
imgpaths = [None]
else:
imgpaths = picture.split(";")
save_names = []
save_path = save_path.rstrip("/").rstrip("\\")
for idx, imgpath in enumerate(imgpaths, 1):
i = imgpath.rfind('/')
j = imgpath.rfind('\\')
start_p = max(i, j) + 1
end_p = imgpath.rfind('.')
filename = imgpath[start_p:end_p]
save_name = f"{save_path}/{filename}-{idx}.gif"
myqr.run(
# 該鏈接表示你想要生成二維碼的鏈接。
words=words,
version=10, # 容錯(cuò)率
level='H', # 糾錯(cuò)水平,范圍是L、M、Q、H,從左到右依次升高
colorized=True, # False為黑白
contrast=1.5, # 用以調(diào)節(jié)圖片的對比度,1.0 表示原始圖片。
brightness=1.0, # 用來調(diào)節(jié)圖片的亮度。
save_name=save_name, # 存儲的文件名
# 背景圖片的路徑,你如果給的是".png/.jpg"等靜態(tài)圖片,最終生成的就是靜態(tài)二維碼!
# 背景圖片的路徑,你如果給的是".gif"等動態(tài)圖片,最終只需要保存為".gif",生成的就是動態(tài)二維碼!
picture=imgpath
)
save_names.append(save_name)
return save_names
while True:
event, values = window.read()
if event == "Exit" or event == sg.WIN_CLOSED:
break
print(event, values)
if event == 'start':
try:
save_names = create_qr(values['words'], values['save_path'], values['bg_filename'])
window["-IMAGE-"].update(filename=save_names[-1])
window["out"].update(f"二維碼圖片已經(jīng)保存到" + ",".join(save_names))
except Exception as e:
window["out"].update(str(e))
window.close()
關(guān)于MyQR:
https://github.com/sylnsfar/qrcode/blob/master/README-cn.md
安裝:
pip install myqr
打包exe:
python -m PyInstaller -wF myqr_gui.py -i C:\Users\Think\Pictures\ico\a.ico
注意:在虛擬環(huán)境下,直接使用pyinstaller打包,最終打包出來的程序無法運(yùn)行,因?yàn)橛行煳创虬晒Γ蒙鲜雒畲虬纯山鉀Q這個(gè)問題。
給你的微信二維碼,添加自定義背景圖
猛地一看標(biāo)題,大家可能不太明白這是啥意思,我大致為你說明一下。
在微信中,我們本身可以保存自己的二維碼,但是一般都是沒有背景樣式的。如果你想將女朋友的照片,與你的個(gè)人二維碼融合起來,應(yīng)該怎么辦呢?下面我來好好給你講述一下。
首先,我們保存自己的微信二維碼圖片,將該二維碼解碼還原為網(wǎng)址。
二維碼解碼還原為網(wǎng)址,我使用我十年前開發(fā)的二維碼工具進(jìn)行識別:
獲取到鏈接節(jié)后,再使用我用python開發(fā)的二維碼生成工具:
多張動態(tài)二維碼
選擇多張底圖,批量生成二維碼:

然后點(diǎn)擊生成二維碼(可能需要多等一會):
下面是生成的4張對應(yīng)的二維碼圖片:

然后打開Imagine軟件:

點(diǎn)擊工具->動畫作坊

點(diǎn)擊插入幀,選擇圖片并打開:

拖動好順序后,全選圖片點(diǎn)擊幀屬性:

我統(tǒng)一設(shè)置為700毫秒,然后確定:

然后將動畫屬性設(shè)置為循環(huán):

然后保存即可。
更多閱讀
特別推薦

點(diǎn)擊下方閱讀原文加入社區(qū)會員
