Python實現(xiàn)不同樣式二維碼
當(dāng)你提到二維碼時,大多數(shù)人想到的是倉庫管理或產(chǎn)品標(biāo)簽等 "工業(yè) "應(yīng)用,但這篇文章在很大程度上是關(guān)于二維碼的個人和社會用途。
有趣的事實
二維(QR)碼是在1994年發(fā)明的,最近幾年它的"非接觸 "特性使其應(yīng)用廣泛。
二維碼具備良好的解決方案。它可以被幾乎所有的手機(jī)使用默認(rèn)的照片應(yīng)用程序掃描,同樣,掃描它們也會根據(jù)它們的背景觸發(fā)某種動作。
例如,一個含有URL的QR碼允許你在瀏覽器中打開它。含有Wifi登錄信息的二維碼允許你立即連接。含有聯(lián)系人詳細(xì)信息的二維碼允許您在地址簿中創(chuàng)建一個新的聯(lián)系人。帶有地理坐標(biāo)的二維碼允許你在地圖上找到一個位置。這使掃描者的生活變得非常容易,并使信息提供者完全脫離......他們不再需要為了發(fā)生互動而在場。
開始
在開始之前,我做了一些研究,并選擇了Python中的segno模塊,因為它有全面的功能列表和漂亮的文檔。在谷歌搜索Python中的QR碼時,它并沒有出現(xiàn)在最前面,甚至在模塊名稱中也沒有 "QR",但不要因此而放棄--它是一個很棒的工具。
讓我們先用 .make()方法創(chuàng)建一個最簡單的QR碼。它只包含可以復(fù)制或傳輸?shù)脑紨?shù)據(jù),由于內(nèi)容很短, segno默認(rèn)創(chuàng)建一個有趣的 "微型QR "碼。
pip install segno
import segno
price_tag = segno.make("£9.99")
price_tag.save("Price Tag.png")
你也可以使用方便的 .show方法,而不是用 .save來創(chuàng)建一個文件,然后導(dǎo)航到它,顯示它,使用后再刪除它。這將創(chuàng)建一個臨時圖像文件,并在你的默認(rèn)圖像查看器中自動打開。這對調(diào)試或測試很有幫助,特別是當(dāng)你開始試驗不同的顏色和背景圖像,并想確認(rèn)QR碼仍能正常掃描時。
用于分享URL的QR碼
使用同樣的方法和稍大的有效載荷,我第一個任務(wù)(分享視頻信息)的Python代碼是微不足道的。
import segno
video = segno.make('https://www.baidu.com/')
video.save('Video.png', scale=4)
只需多寫一行代碼,我就能創(chuàng)建一個更加豐富多彩的QR碼,在這種情況下,我最喜歡的一張圖片實際上是一個用Piet編程語言編寫的 "Hello World "腳本。
pip install qrcode-artistic
import segno
piet = segno.make('https://www.baidu.com/', error='h')
piet.to_artistic(background="background.png", target='Piet.png', scale=16)
攜帶WIFI詳細(xì)信息的QR碼
我的第二個任務(wù)(WIFI登錄細(xì)節(jié))的Python代碼也同樣簡單,但我定制了顏色并使輸出更大。
importc segno
wifi_settings = {
ssid='(Wifi Name)',
password='(Wifi Password)',
security='WPA',
}
wifi = segno.helpers.make_wifi(**wifi_settings)
wifi.save("Wifi.png", dark="yellow", light="#323524", scale=8)
聯(lián)系信息的二維碼
在這些快速成功的鼓勵下,我決定為一個朋友的藝術(shù)和手工藝業(yè)務(wù)創(chuàng)建一個二維碼。
import segno
vcard = segno.helpers.make_vcard(
name='Pxxx;Jxxx',
displayname='Times Tables Furniture',
email=('jxxxpxxx@timestables.furniture'),
url=[
'https://www.baidu.com/',
'https://www.baidu.com/'
],
phone="+44xxxxxxxxxx",
)
img = vcard.to_pil(scale=6, dark"#FF7D92").rotate(45, expand=True)
img.save('Etsy.png')
對于我自己的VCard,我選擇添加我公司的標(biāo)志作為背景。
import segno
awsom = segno.helpers.make_vcard(
name='Fison;Pete',
displayname='AWSOM Solutions Ltd.',
email=('pxxxfxxx@awsom.solutions'),
url=[
'https://www.baidu.com/',
'https://medium.com/@petefison',
'https://github.com/pfython'
],
phone="+44xxxxxxxxxx",
)
awsom.to_artistic(
background="logo.png",
target='AWSOM.png',
scale=6,
quiet_zone="#D29500"
)
用于其他目的的二維碼
segno API還允許你做以下事情。
segno.helpers.make_email : 發(fā)送一封預(yù)先準(zhǔn)備好主題和內(nèi)容的電子郵件。對于訂閱新聞簡報,或者從郵件服務(wù)器上觸發(fā)任何可能的行動,都是非常好的。
segno.helpers.make_epc_qr: 發(fā)起一個電子支付。
segno.helpers.make_geo: 在一個特定的經(jīng)度和緯度打開默認(rèn)的地圖應(yīng)用。
segno.make_sequence : 使用 "結(jié)構(gòu)化附加 "模式創(chuàng)建一個QR碼序列。
把所有東西都保存在內(nèi)存中
如果你喜歡把所有的處理保持在 "內(nèi)存中",而不是在硬盤或服務(wù)器上創(chuàng)建文件,你可以創(chuàng)建一個PIL圖像對象,或者使用BytesIO保存一個類似文件的對象:
import segno
beatle = segno.make('Paul McCartney')
beatle = qrcode.to_pil()import segno
import io
beatle = segno.make('Paul McCartney')
buff = io.BytesIO()
beatle.save(buff, kind='svg')同樣,如果你喜歡直接從URL中加載背景圖片到內(nèi)存中,而不是先在硬盤或服務(wù)器上創(chuàng)建一個文件,你可以使用urlopen方法。
from urllib.request import urlopen
import segno
beatle = segno.make('Ringo Starr', error='h')
url ='https://www.baidu.com/'
bg_file = urlopen(url)
beatle.to_artistic(background=bg_file, target='ringo.gif', scale=10
)二維碼的創(chuàng)造性與家用式的想法
希望這篇短文能讓您對使用二維碼有興趣,不僅僅是用于 "工業(yè) "項目,而且還用于個人和社會項目。網(wǎng)上有很多文章,建議將二維碼創(chuàng)造性地用于商業(yè)和營銷,因此,在本文的最后,我想分享一些我自己的 "家用式 "想法,可能會吸引你。
- 在你的垃圾桶邊上有關(guān)于回收規(guī)則的信息
- 觸發(fā)一封電子郵件給親人,說你已經(jīng)安全到家。
- 觸發(fā)一個更新,說你已經(jīng)離開了家。
- 在你所在的城鎮(zhèn)或鄉(xiāng)村道路上尋寶;鏈接到你自己的網(wǎng)站,包括當(dāng)?shù)匦畔ⅰ⑸鐣襟w團(tuán)體、當(dāng)前的地理位置等。
- 在你的房子周圍為年幼的孩子尋寶,或舉行晚宴。
- 在明信片上貼上二維碼,讓家人和朋友直接進(jìn)入你的旅行日記、照片日記或博客中的最新條目。
- 洗衣機(jī)、微波爐、烤箱、打印機(jī)、鍋爐、3D打印機(jī)、激光切割器、甚至汽車等電器的說明書。
- 你的家譜或歷史,或財產(chǎn)信息保存起來供后人參考。
- 一個在線留言簿,游客可以記錄他們的逗留,并留下個人的信息。
- 冰箱上的貼紙,鏈接到最新的家庭購物清單。
- 每個家庭成員的每周家務(wù)事清單。
- 筆記本電腦、電話、相機(jī)、無人機(jī)等的 "如果丟失,請歸還...... "貼紙。
- 誠信箱--讓人們在使用/消費/購買東西時付款,例如,從共享冰箱中的食物和飲料,在農(nóng)場外出售的雞蛋。
- 預(yù)約管理電視/互聯(lián)網(wǎng)/游戲的特權(quán)。
- 嬰兒保姆或?qū)櫸锉D返木o急聯(lián)系信息。
- 在停電的情況下為你提供緊急聯(lián)絡(luò)方式--水、電、煤氣。
- 為你看家護(hù)院的人提供當(dāng)?shù)氐氖称放渌凸尽?/li>
- 個人視頻信息/提醒。
- 關(guān)于你最喜歡的裝飾品或房子周圍的藝術(shù)品的信息。
- 你的酒架/酒窖的品酒說明。
- 花園植物和樹木的標(biāo)簽--物種、澆水、年齡等細(xì)節(jié)。
到此這篇關(guān)于Python實現(xiàn)不同樣式二維碼的文章就介紹到這了,更多相關(guān)Python二維碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何提取csv數(shù)據(jù)并篩選指定條件數(shù)據(jù)詳解
在學(xué)習(xí)python過程中常遇到一種情況,要讀取.csv文件的數(shù)據(jù),然后取出其中某個字段,下面這篇文章主要給大家介紹了關(guān)于Python如何提取csv數(shù)據(jù)并篩選指定條件數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-08-08
Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir()
這篇文章主要介紹了Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir(),文件夾操作是編程中經(jīng)常需要的,mkdir函數(shù)更是經(jīng)典中的經(jīng)典,需要的朋友可以參考下2014-08-08

