(給Python開發者加星標,提升Python技能)
來源: 夏悠然然
https://blog.csdn.net/qq_42730750/article/details/108877378
【導語】:現在都強調個性,那麼怎麼動手製作自己的個性化二維碼呢?本文就跟大家一起探討製作二維碼的方法。
二維碼( 2−Dimensional Barcode),又稱二維條形碼。它是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形來記錄數據符號信息的;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進位相對應的幾何形體來表示文字數值信息,通過圖像輸入設備或光電掃描設備自動識讀以實現信息自動處理。
二維碼有其特定的字符集,每個字符佔有一定的寬度,每種碼具有一定的校驗功能,同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化等特點。
二維條形碼是在二維空間水平和豎直方向存儲信息的條形碼。它的優點是信息容量大,解碼可靠性高,糾錯能力強,製作成本低,保密與防偽性能好。
目前,世界上應用最多的二維條碼符號有Aztec Code、PDF147、QR Code等。
常見的二維碼為QR CodeCode,QR全稱是Quick Response,是一個近幾年來行動裝置上超流行的一種編碼方式。它的結構如下:
QR Code屬於矩陣式二維條碼,又稱棋盤式二維條碼。它是在一個矩形空間通過黑、白像素在矩陣中的不同分布進行編碼。在矩陣相應元素位置上,用點(方點、圓點或其他形狀)的出現表示二進位「1」,點的不出現表示二進位的「0」,點的排列組合確定了矩陣式二維條碼所代表的意義。主要有以下特點:
1. 符號規格從版本1(21×21)到版本40(177×177),每提高一個版本,每邊增加4個碼元(即指構成QR碼的方形黑白點);
2. 信息容量大:能存儲7089個數字字符或4296個字母字符或2953個8位字節字符或1817漢字字符;
3. 糾錯能力強:即使部分編碼變髒或破損,也可以恢復數據。L級約可糾錯7%的數據碼字,M級約可糾錯15%的數據碼字,Q級約可糾錯25%的數據碼字,H級約可糾錯30%的數據碼字;
4. 可以從任意方向讀取:QR碼可以從360°任一方向均可快速讀取。通過QR碼中的三處定位圖案,可以幫助QR碼不受背景樣式的影響,實現快速穩定的讀取。
2. MyQR
MyQR可以生成常見的二維碼、藝術二維碼(黑白或彩色), 動態二維碼(黑白或彩色),安裝命令如下:
生成二維碼代碼如下:
if __name__ == '__main__': version, level, qr_name = myqr.run( words='https://xxx.com/ccc', version=1, level='H', picture='./XKD.gif', colorized=True, contrast=1.0, brightness=1.0, save_name='test4.gif', save_dir=os.getcwd() ) print(version) print(level) print(qr_name)MyQR確實是挺好用的,唯一的缺點就是,不支持中文!!!沒錯,是不是有點遺憾,它只支持以下字符:
數字 0 到 9
大小寫的英文字母
常用英文標點符號和空格
3. qrcodeqrcode的功能雖稍遜於MyQR,但是它支持中文字符,且能生成矢量圖,安裝命令如下:
生成二維碼代碼如下:
def mergeImg(img1, img2, flag=True): """ 合併圖像 :param img1: :param img2: :param flag: True 表示將logo居中, False 表示將logo作為背景圖 :return: """ img1_w, img1_h = img1.size if flag: img2_w = int(img2.size[0] / 3) img2_h = int(img2.size[1] / 3) img2 = img2.resize(size=(img2_w, img2_h), resample=Image.ANTIALIAS) img1.paste(im=img2, box=(int((img1_w - img2_w) / 2), int((img1_h - img2_h) / 2))) img1.save('./test8.png') else: img2 = img2.resize(size=(img1_w, img1_h), resample=Image.ANTIALIAS) out_img = Image.blend(img1, img2, alpha=0.3) out_img.save('./test9.png')
if __name__ == '__main__': qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4, ) qr.add_data('https://xxx.com/ccc') qr.make(fit=True)
img1 = qr.make_image(fill_color="orange", back_color="white").convert('RGB')
img2 = Image.open('./cutcamera.png').convert('RGB') mergeImg(img1, img2, flag=True)
- EOF -
覺得本文對你有幫助?請分享給更多人
關注「Python開發者」加星標,提升Python技能
點讚和在看就是最大的支持❤️