首頁 > 軟體

Python一行程式碼實現生成和讀取二維條碼

2022-02-22 13:00:25

二維條碼是用某種特定的幾何圖形按一定規律在平面(二維方向上)分佈的、黑白相間的、記錄資料符號資訊的圖形。

二維條碼被稱為快速響應碼,可能看起來很簡單,但它們能夠儲存大量資料。無論掃描二維條碼時包含多少資料,使用者都可以立即存取資訊。

近些年二維條碼也是迅速普及,目前已經成為了我們生活中的一部分,它有許多應用場景:

  • 資訊獲取(名片、地圖、WIFI密碼、資料)
  • 網站跳轉(跳轉到微博、手機網站、網站)
  • 廣告推播(使用者掃碼,直接瀏覽商家推播的視訊、音訊廣告)
  • 手機電商(使用者掃碼、手機直接購物下單)
  • 防偽溯源(使用者掃碼、即可檢視生產地;同時後臺可以獲取最終消費地)
  • 優惠促銷(使用者掃碼,下載電子優惠券,抽獎)
  • 會員管理(使用者手機上獲取電子會員資訊、VIP服務)
  • 手機支付(掃描商品二維條碼,通過銀行或第三方支付提供的手機端通道完成支付)
  • 賬號登入(掃描二維條碼進行各個網站或軟體的登入)

Python 處理二維條碼也非常簡單,今天我們就來看看怎樣使用一行程式碼生成或者讀取二維條碼。

生成二維條碼

Python 有一個處理二維條碼的模組叫qrcode,我們要生成二維條碼,需要安裝這個庫:

生成二維條碼就是呼叫這個模組的 make 函數:

import qrcode

img = qrcode.make('https://www.zhihu.com/people/wu-huan-bu-san')
img.save('./pic.jpg')

執行這段程式碼,就可以得到下面的二維條碼:

大家可以掃碼試試看,說不定有驚喜哦!

你肯定會說:騙子!這不是一行程式碼啊!

好吧,這兩行可以合併的嘛:

qrcode.make('https://www.zhihu.com/people/wu-huan-bu-san').save('./pic.jpg')

讀取二維條碼

讀取二維條碼就是將二維條碼背後隱藏的資訊解析出來,這時候就不是用 qrcode 這個模組了,而是用 OpenCV 這個模組。相信公眾號的讀者肯定對這個庫比較熟悉,經常出現在我們的文章中。

先安裝這個庫:

pip install opencv-python

接著,我們以上面生成的二維條碼為例,來看看讀取的程式碼:

import cv2

d = cv2.QRCodeDetector()
val, _, _ = d.detectAndDecode(cv2.imread("pic.jpg"))
print("the secret is: ", val)

執行這段程式碼,列印資訊是:

the secret is: https://www.zhihu.com/people/wu-huan-bu-san

這正是我們生成二維條碼的內容。

這裡怎麼轉換成一行程式碼就不需要我贅述了吧!

補充

當然Python除了可以生成靜態的二維條碼,還能生成動態的

下面是實現動態二維條碼的範例程式碼,可以參考一下

# -*- coding:utf-8 -*-
# @Time   : 2021-09-30
# @Author : carl_DJ


from MyQR import myqr

#定義二維條碼內容
word =  "miss U "

#追加背景
myqr.run(
    word,
    #圖片型別為位.gif
    picture='./sohucs.gif',
    colorized=True,
    version=6
)

當然,Python還可以製作一個自定義二維條碼生成工具,可以根據自己的需求生成黑白的或者彩色的二維條碼。

from gooey import GooeyParser,Gooey
from MyQR import myqr

@Gooey(encoding='utf-8',program_name='二維條碼生成器',program_description='生成動態、彩色、黑白二維條碼',language='chinese')
def main():
  parser = GooeyParser(description="生成動態、彩色、黑白二維條碼")
  parser.add_argument('文字', widget="TextField")
  parser.add_argument('檔案', widget="FileChooser")   # 檔案選擇框
  parser.add_argument('樣式選擇', widget='Dropdown',choices={"黑白":"1","彩色":2,"動態":3})
  parser.add_argument('檔案儲存路徑',widget='DirChooser')
  args = parser.parse_args()
  if args.樣式選擇 == '黑白':
    # 生成二維條碼
    myqr.run(words=args.文字,version=9,save_name='qr.png',save_dir=args.檔案儲存路徑)
    print('成功')
  elif args.樣式選擇 == '彩色':
    if args.檔案.split('.')[-1] == 'gif' or args.檔案.split('.')[-1] == 'png' or args.檔案.split('.')[-1] == 'jpeg':
      myqr.run(words=args.文字, version=9, save_name='qr.png', save_dir=args.檔案儲存路徑, picture=f'{args.檔案}',colorized=True)
      print('成功')
  elif args.樣式選擇 == '動態':
    if args.檔案.split('.')[-1] == 'gif':
      myqr.run(words=args.文字, version=9, save_name='qrcode.gif', save_dir=args.檔案儲存路徑, picture=args.檔案,colorized=True)
    else:
      print("圖片格式錯誤,動態二維條碼圖片必須為gif格式的")
if  __name__ == '__main__':
  main()

總結

二維條碼的操作程式碼夠簡單吧!相信看過這篇文章的你肯定能記住,下次遇到二維條碼操作的時候只需5秒就可以出結果!當然,還有其他一些操作,大家可以閱讀模組的介面去嘗試。

到此這篇關於Python一行程式碼實現生成和讀取二維條碼的文章就介紹到這了,更多相關Python 二維條碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com