python一键生成二维码/条形码并保存成图片
QRCode是生成二維碼的庫,采用里德-所羅門碼來進行編碼,里德-所羅門碼是一種帶有容錯機制的編碼方法,采用這種機制掃描的時候并不需要讀取所有的比特位,因此也使得簡單的在QRcode中少量的更改信息,比如加入小型的圖片等。
image是圖片處理庫,依賴于django、olefile、pillow
安裝qrcode
pip install qrcode
查看命令行
命令行中使用命令qr https://www.baidu.com
看得不是很清晰,于是我們把它保存成圖片
安裝image庫,pip install image,安裝成功
再次執行 qr https://www.baidu.com > baidu.png
生成圖片baidu.png,打開微信掃一掃,發現跳轉到百度網頁
腳本實現
?
# coding:utf8 import qrcode from PIL import Image url = "https://www.github.com" address = "D://github.png" img = qrcode.make(url) img.show()?
高級用法
?
# coding:utf8 import qrcode from PIL import Image url = "https://www.github.com" address = "D://github.png" qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=8,border=8,)qr.add_data(url) qr.make(fit=True) img = qr.make_image() img.show()生成二維碼的步驟:?
1. 創建QRCode對象?
2. add_data()添加數據?
3. make_image()創建二維碼(返回img類型的圖片對象)?
4. 自動打開圖片,img.show()
注:實際上make函數也是通過實例化一個QRCode對象來生成二維碼的。調用make的時候也可以傳入初始化參數
關于QRCode類參數介紹
QRCode類參數有四個參數:version、err_correction、box_size、border
version:參數是(1-40)的整數,該參數用來控制二維碼的尺寸(最小,version=1,該version的尺寸是21*21)。把version設置為None且使用fit參數會自動生成二維碼。
err_correction:參數控制生成二維的誤差。qrcode包中有四個可用的常量:
ERROR_CORRECT_L:該常量表示誤差率低于7%(包含7%)
ERROR_CORRECT_M(默認值):該常量表示誤差率低于15%(包含15%)
ERROR_CORRECT_Q:該常量表示誤差率低于25%(包含25%)
ERROR_CORRECT_H:該常量表示誤差率低于30%(包含30%)
box_size:參數用來控制二維碼的每個單元(box)格有多少像素點
border: 參數用控制每條邊有多少個單元格(默認值是4,這是規格的最小值)
二、嘗試使用pyBarcode庫實現條形碼的生成
https://pypi.org/project/pyBarcode/0.7/?安裝?pip install pyBarcode==0.7
如果沒有權限只能下載安裝包了,解壓后,執行 python setup.py install
from barcode.writer import ImageWriter from barcode.ean import EuropeanArticleNumber13 from barcode import get_barcode_class from random import randintdef randomNums(n):"生成隨機n位的條形碼數"barCode_num = ''for i in range(n):barCode_num += str(randint(0,9))def generateBarcode():"generate bar code by ean13 style which dfault format is png"# method1barcode_nums = randomNums(10)barcode_ean13 = EuropeanArticleNumber13(barcode_nums, writer=ImageWriter())barcode_ean13.save("./barCode/image")# method2 equalEAN = get_barcode_class("ean13")ean = EAN(barcode_nums, writer=ImageWriter())ean.save("./barCode/image1")生成圖片如下
缺點是:沒有開啟和終止符(隨機生成的字符串不知道是否符合國際標準)
EAN-13通用商品條形碼一般由前綴部分、制造廠商代碼、商品代碼和校驗碼組成。商品條形碼中的前綴碼是用來標識國家或地區的代碼,賦碼權在國際物品編碼協會,如00-09代表美國、加拿大。45-49代表日本。690-695代表中國大陸,471代表中國臺灣地區,489代表香港特區。制造廠商代碼的賦權在各個國家或地區的物品編碼組織,中國由國家物品編碼中心賦予制造廠商代碼。商品代碼是用來標識商品的代碼,賦碼權由產品生產企業自己行使。商品條形碼最后用1位校驗碼來校驗商品條形碼中左起第l-12數字代碼的正確性。
?
總結
以上是生活随笔為你收集整理的python一键生成二维码/条形码并保存成图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典的设计模式14——命令模式
- 下一篇: 【搞事情】利用PyQt为目标检测SSD3