主頁(yè) > 知識(shí)庫(kù) > python 使用MyQR和qrcode來(lái)制作二維碼

python 使用MyQR和qrcode來(lái)制作二維碼

熱門(mén)標(biāo)簽:騰訊外呼線路 海南400電話如何申請(qǐng) 白銀外呼系統(tǒng) 廣告地圖標(biāo)注app 唐山智能外呼系統(tǒng)一般多少錢(qián) 哈爾濱ai外呼系統(tǒng)定制 激戰(zhàn)2地圖標(biāo)注 陜西金融外呼系統(tǒng) 公司電話機(jī)器人

前言

  今天下午無(wú)聊,突發(fā)奇想想玩玩二維碼,于是就結(jié)合著上學(xué)期學(xué)的標(biāo)識(shí)技術(shù),用Python制作了一下二維碼。

一、二維碼

  二維碼( 2 − D i m e n s i o n a l (2-Dimensional(2−Dimensional B a r c o d e ) Barcode)Barcode),又稱二維條形碼。它是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形來(lái)記錄數(shù)據(jù)符號(hào)信息的;在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示文字?jǐn)?shù)值信息,通過(guò)圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。

  一維條形碼,就是我們?nèi)粘Kf(shuō)的條形碼( B a r c o d ) (Barcod)(Barcod),常見(jiàn)于食品包裝上。它是將寬度不等的多個(gè)黑條和空白,按一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識(shí)符。常見(jiàn)的一維條形碼是由黑條(簡(jiǎn)稱條)和白條(簡(jiǎn)稱空)排成平行線圖案。條形碼可以標(biāo)出物品的生產(chǎn)國(guó)、制造廠家、商品名稱、生產(chǎn)日期以及圖書(shū)分類(lèi)號(hào)、郵件起止地點(diǎn)、類(lèi)別、日期等信息。
  通常一維條形碼所能表示的字符集不過(guò)10個(gè)數(shù)字、26個(gè)英文字母及一些特殊字符,條碼字符集最大所能表示的字符個(gè)數(shù)為128個(gè)ASCII字符,信息量非常有限。

  二維碼有其特定的字符集,每個(gè)字符占有一定的寬度,每種碼具有一定的校驗(yàn)功能,同時(shí)還具有對(duì)不同行的信息自動(dòng)識(shí)別功能、及處理圖形旋轉(zhuǎn)變化等特點(diǎn)。
  二維條形碼是在二維空間水平和豎直方向存儲(chǔ)信息的條形碼。它的優(yōu)點(diǎn)是信息容量大,譯碼可靠性高,糾錯(cuò)能力強(qiáng),制作成本低,保密與防偽性能好。

目前,世界上應(yīng)用最多的二維條碼符號(hào)有Aztec Code、PDF147、QR Code等。

常見(jiàn)的二維碼為QR CodeCode,QR全稱是Quick Response,是一個(gè)近幾年來(lái)移動(dòng)設(shè)備上超流行的一種編碼方式。它的結(jié)構(gòu)如下:

QR Code屬于矩陣式二維條碼,又稱棋盤(pán)式二維條碼。它是在一個(gè)矩形空間通過(guò)黑、白像素在矩陣中的不同分布進(jìn)行編碼。在矩陣相應(yīng)元素位置上,用點(diǎn)(方點(diǎn)、圓點(diǎn)或其他形狀)的出現(xiàn)表示二進(jìn)制“1”,點(diǎn)的不出現(xiàn)表示二進(jìn)制的“0”,點(diǎn)的排列組合確定了矩陣式二維條碼所代表的意義。
主要有以下特點(diǎn):

  • 符號(hào)規(guī)格從版本1(21×21)到版本40(177×177),每提高一個(gè)版本,每邊增加 4 個(gè)碼元(即指構(gòu)成 QR 碼的方形黑白點(diǎn));
  • 信息容量大:能存儲(chǔ) 7089 個(gè)數(shù)字字符或 4296 個(gè)字母字符或 2953 個(gè) 8 位字節(jié)字符或 1817 漢字字符;
  • 糾錯(cuò)能力強(qiáng):即使部分編碼變臟或破損,也可以恢復(fù)數(shù)據(jù)。L級(jí)約可糾錯(cuò) 7% 的數(shù)據(jù)碼字,M級(jí)約可糾錯(cuò) 15% 的數(shù)據(jù)碼字,Q級(jí)約可糾錯(cuò)25%的數(shù)據(jù)碼字,H級(jí)約可糾錯(cuò) 30% 的數(shù)據(jù)碼字;
  • 可以從任意方向讀取:QR碼可以從 360° 任一方向均可快速讀取。通過(guò) QR 碼中的三處定位圖案,可以幫助 QR 碼不受背景樣式的影響,實(shí)現(xiàn)快速穩(wěn)定的讀取。

二、MyQR

MyQR可以生成常見(jiàn)的二維碼、藝術(shù)二維碼(黑白或彩色),動(dòng)態(tài)二維碼(黑白或彩色),安裝命令如下:

pip install MyQR -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

更多詳細(xì)內(nèi)容可以參考官方文檔:https://github.com/sylnsfar/qrcode

代碼如下

if __name__ == '__main__':
    version, level, qr_name = myqr.run(
        words='https://blog.csdn.net/qq_42730750',
        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)

  這是我生成的幾個(gè)二維碼:

MyQR確實(shí)是挺好用的,唯一的缺點(diǎn)就是,不支持中文?。?!沒(méi)錯(cuò),是不是有點(diǎn)遺憾,它只支持以下字符:

  • 數(shù)字 0 到 9
  • 大小寫(xiě)的英文字母
  • 常用英文標(biāo)點(diǎn)符號(hào)和空格

三、qrcode

qrcode的功能雖稍遜于MyQR,但是它支持中文字符,且能生成矢量圖,安裝命令如下:

pip install qrcode -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

官方文檔 Github 網(wǎng)址:https://github.com/lincolnloop/python-qrcode

生成二維碼代碼如下:

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)
        # 縮放logo
        img2 = img2.resize(size=(img2_w, img2_h), resample=Image.ANTIALIAS)
        # 將logo居中顯示
        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)
        # 兩張圖片的size和mode要一致
        # 計(jì)算公式為out = image1 * (1.0 - alpha) + image2 * alpha
        # 這里的背景色就是一種干擾了, 如果將二維碼的透明度設(shè)置過(guò)高會(huì)識(shí)別不出來(lái)
        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://blog.csdn.net/qq_42730750')
    qr.make(fit=True)

    # black green purple orange pink white blue
    # make_image() 返回的是一個(gè)PilImage對(duì)象
    # 可以使用pillow對(duì)它進(jìn)行圖像處理相關(guān)的操作
    # img1 = qr.make_image(fill_color="#8A2BE2", back_color="white")
    img1 = qr.make_image(fill_color="orange", back_color="white").convert('RGB')
    # img1.show()
    # img1.save('./test6.png')

    img2 = Image.open('./cutcamera.png').convert('RGB')
    mergeImg(img1, img2, flag=True)

  這是我生成的幾個(gè)二維碼:

注:文中生成的二維碼均綠色、健康,僅用作學(xué)習(xí)之用,可以放心掃。

以上就是python 使用MyQR和qrcode來(lái)制作二維碼的詳細(xì)內(nèi)容,更多關(guān)于python用MyQR和qrcode來(lái)制作二維碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python使用qrcode二維碼庫(kù)生成二維碼方法詳解
  • Python qrcode 生成一個(gè)二維碼的實(shí)例詳解
  • Python利用myqr庫(kù)創(chuàng)建自己的二維碼
  • 用python生成(動(dòng)態(tài)彩色)二維碼的方法(使用myqr庫(kù)實(shí)現(xiàn))
  • Python第三方庫(kù)qrcode或MyQr生成博客地址二維碼

標(biāo)簽:黔西 益陽(yáng) 黑龍江 鷹潭 常德 四川 惠州 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python 使用MyQR和qrcode來(lái)制作二維碼》,本文關(guān)鍵詞  python,使用,MyQR,和,qrcode,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 使用MyQR和qrcode來(lái)制作二維碼》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python 使用MyQR和qrcode來(lái)制作二維碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章