亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的個(gè)性二維碼設(shè)計(jì)與實(shí)現(xiàn)

        2019-07-23 01:51:16岐艷芳
        科技視界 2019年15期
        關(guān)鍵詞:二維碼解析

        岐艷芳

        【摘 要】隨著掃碼支付等應(yīng)用的普及,二維碼在現(xiàn)實(shí)生活中的應(yīng)用越來越普遍。Python作為目前世界上流行的編程語言,具有豐富和強(qiáng)大的庫,幾乎涵蓋了計(jì)算機(jī)技術(shù)的各個(gè)領(lǐng)域。本文簡述了二維碼的結(jié)構(gòu)及繪制過程,著重講解基于Python生成個(gè)性二維碼及解析的設(shè)計(jì)實(shí)現(xiàn)過程,較詳細(xì)闡述了Python第三方庫qrcode、zbarlight等庫的具體使用,從而生成炫酷個(gè)性的二維碼藝術(shù)圖案。

        【關(guān)鍵詞】二維碼;Python;生成;解析

        中圖分類號(hào): TP391.44;TP393.092文獻(xiàn)標(biāo)識(shí)碼: A文章編號(hào): 2095-2457(2019)15-0096-002

        DOI:10.19694/j.cnki.issn2095-2457.2019.15.046

        Design and Implementation of Personal QR Code Based on Python

        QI Yan-fang

        (School of Software Engineering,Lanzhou Institute of Technology,Gansu Lanzhou 730050,China)

        【Abstract】With the popularity of scanning code payment and other applications, The application of QR code in real life is becoming more and more common. Python, as a popular programming language in the world, has rich and powerful libraries, covering almost all fields of computer technology. In this paper, the structure and drawing process of QR code are briefly described, the design and implementation process of generating personalized QR code and parsing based on Python are emphasized, and the concrete use of Python third party library qrcode,zbarlight and other libraries is described in detail. In order to generate cool personality of the QR code art pattern.

        【Key words】QR code; Python; Generation; Parsing

        隨著信息化和工業(yè)化“兩化融合”的廣泛應(yīng)用和深度結(jié)合,二維碼在現(xiàn)實(shí)生活中的應(yīng)用越來越普遍,其中掃碼支付指手機(jī)通過掃描二維碼跳轉(zhuǎn)到支付頁面,再進(jìn)行付款。這種新的支付方式,已被越來越多的人接受并使用。去年,在“一帶一路”國際合作高峰論壇舉行期間,20國青年投票選出中國的“新四大發(fā)明”:高鐵、掃碼支付、共享單車和網(wǎng)購。

        1 二維碼概述

        1.1 二維碼

        二維碼(2-dimensional bar code),是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息。它能將數(shù)字、英文字母、漢字、日文字母、特殊符號(hào)(如空格,%,/ 等)、二進(jìn)制等信息記錄到一個(gè)正方形的圖片中。我們常說的二維碼采用QR code 編碼制,所以,二維碼又被稱為 QR code。

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

        1.2 二維碼結(jié)構(gòu)

        1.2.1 功能圖形

        功能圖形是不參與編碼數(shù)據(jù)的區(qū)域。它包含空白區(qū)、位置探測圖形、位置探測圖形分隔符、定位圖形和校正圖形五大模塊。

        空白區(qū):顧名思義就是要留空白,以保證QR能被識(shí)別。

        位置探測圖形:類似中文的“回”字。在QR碼標(biāo)識(shí)中,位于左上、右上和左下角,作用是協(xié)助掃描軟件定位QR碼并轉(zhuǎn)換坐標(biāo)系。

        位置探測圖形分隔符:主要作用是區(qū)分功能圖形和編碼區(qū)域。

        定位圖形:由黑白間隔的格子組成的線條,主要用于指示標(biāo)識(shí)密度和確定坐標(biāo)系。

        校正圖形:用于進(jìn)一步校正坐標(biāo)系。

        1.2.2 編碼區(qū)域

        編碼區(qū)域是數(shù)據(jù)進(jìn)行編碼存儲(chǔ)的區(qū)域,它由格式信息、版本信息、數(shù)據(jù)和糾錯(cuò)碼字三部分構(gòu)成。

        格式信息:存放一些格式化數(shù)據(jù)的信息,例如容錯(cuò)級(jí)別、數(shù)據(jù)掩碼等。

        版本信息:規(guī)定二維碼的規(guī)格。QR 碼一共有40種規(guī)格的矩陣。

        數(shù)據(jù)和糾錯(cuò)碼:主要是存儲(chǔ)實(shí)際數(shù)據(jù)以及用于糾錯(cuò)碼字。

        1.3 二維碼的繪制過程

        二維碼的繪制過程簡述如下:

        (1)在二維碼的左上角、左下角、右上角繪制位置探測圖形,得到一個(gè)7x7的矩陣;

        (2)繪制校正圖形,得到一個(gè)5x5的矩陣;

        (3)繪制兩條連接三個(gè)位置探測圖形的定位圖形;

        (4)在上述圖片的基礎(chǔ)上,繼續(xù)繪制格式信息;

        (5)接著繪制版本信息;

        (6)填充數(shù)據(jù)碼和糾錯(cuò)碼到二維碼圖中;

        (7)最后繪制蒙版圖案,從而將數(shù)據(jù)排列成各種圖片。

        2 基于Python生成個(gè)性二維碼

        要用Python生成二維碼,首先需要下載Python的二維碼庫qrcode。qrcode庫是用于生成二維碼圖像的Python第三方庫。qrcode 運(yùn)行在 Python 3 版本上,該庫能生成三種二維碼圖片:普通二維碼、帶圖片的藝術(shù)二維碼以及動(dòng)態(tài)二維碼。它比較適合直接用于生成二維碼圖片的場景。

        2.1 基本二維碼生成

        (1)安裝Python第三方庫??梢允褂?pip 方式。但是該庫依賴 pillow、numpy 和matplotlib。因此,我們需要先安裝依賴庫,再安裝qrcode庫,導(dǎo)入安裝庫。

        (2)讀取二維碼圖片,并將二維碼轉(zhuǎn)換為所需大小

        qrcode=Image.open('img.png').convert("RGBA")

        src_size=(qrcode.size[0], qrcode.size[1])

        qrcode=qrcode.resize((99, 99))#將二維碼轉(zhuǎn)換為99x99的尺寸

        plt.imshow(qrcode)#顯示當(dāng)前的二維碼圖片

        plt.show()

        得到結(jié)果如圖1所示。

        (3)讀取新的圖片,將新的圖片轉(zhuǎn)換為合適的尺寸

        bg=Image.open('abc.jpeg').convert("RGBA")

        if bg.size[0]

        bg =bg.resize((qrcode.size[0]-24,(qrcode.size[0]-24)*int(bg.size[1]/bg.size[0])))

        else:

        bg=bg.resize(((qrcode.size[1]-24)*int(bg.size[0]/bg.size[1]),qrcode.size[1]-24))

        (4)循環(huán)二維碼圖片中各個(gè)像素點(diǎn),其中三個(gè)定位圖案和有效數(shù)據(jù)不能替換

        for i in range(qrcode.size[0]-24):

        for j in range(qrcode.size[1]-24):#忽略左上角定位圖案

        if i<24 and j<24:

        continue#忽略右上角定位圖案

        elif i<24 and j>qrcode.size[1]-49:

        continue#忽略左下角定位圖案

        elif i>qrcode.size[0]-49 and j<24:

        continue

        elif i%3==1 and j%3==1:

        continue#背景中透明的部分不做處理

        elif bg.getpixel((i,j))[3]==0:

        continue

        else:#用新圖片上的像素替換原有二維碼上

        qrcode.putpixel((i+12,j+12), bg.getpixel((i,j)))

        顯示新的二維碼圖片,得到結(jié)果如圖2所示。

        2.2 動(dòng)態(tài)二維碼的生成

        生成一個(gè)有動(dòng)態(tài)效果的二位碼,步驟和簡單二維碼生成類似,區(qū)別在于使用的是二維碼加動(dòng)圖GIF。

        設(shè)計(jì)步驟:先將上面的過程封裝為一個(gè)函數(shù),讀取Gif圖片,循環(huán)掃描Gif圖片中的所有幀數(shù),形成循環(huán)圖片列表,并將結(jié)果存到一個(gè)新的數(shù)組中,最后合并圖片組到新的gif文件中。就可得到動(dòng)態(tài)效果的二位碼,結(jié)果如圖3所示。

        循環(huán)掃描Gif圖片中的所有幀數(shù),形成循環(huán)圖片列表的代碼如下:

        gif=Image.open('fish.gif')

        duration=gif.info.get('duration', 0)

        bg_frames=[]

        try:

        i=0

        while 1:

        gif.seek(i)

        gif_copy=gif.copy()

        if i==0:

        palette=gif_copy.getpalette()

        else:

        gif_copy.putpalette(palette)

        bg_frames.append(gif_copy.convert("RGBA"))

        i+=1

        except EOFError:

        pass

        3 Python解析二維碼圖片

        解析二維碼圖片的信息需要使用zbarlight(二維碼解析包),首先安裝zbarlight庫,zbarlight二維碼解析包目前僅僅支持Python2.7以下版本。解析二維碼信息,返回二維碼信息的函數(shù)代碼如下:

        import zbar

        def decode_qrcode(path):#參數(shù)path:二維碼圖片路徑

        scanner = zbar.ImageScanner()#創(chuàng)建圖片掃描對(duì)象

        scanner.parse_config('enable')#設(shè)置對(duì)象屬性

        img =Image.open(path).convert('L')#打開含有二維碼的圖片

        width, height = img.size#獲取圖片的尺寸

        #建立zbar圖片對(duì)象并掃描轉(zhuǎn)換為字節(jié)信息

        qrCode=zbar.Image(width, height, 'Y800', img.tobytes())

        scanner.scan(qrCode)

        data= ''#組裝解碼信息

        for s in qrCode:

        data+=s.data

        delimg#刪除圖片對(duì)象

        return data#輸出解碼結(jié)果

        4 結(jié)語

        Python作為目前世界上流行的編程語言,具有豐富和強(qiáng)大的庫,幾乎涵蓋了計(jì)算機(jī)技術(shù)的各個(gè)領(lǐng)域,具有良好的編程生態(tài),在圖像處理以及數(shù)字識(shí)別領(lǐng)域也已經(jīng)發(fā)揮了其重要作用,本文主要探討了基于Python的二維碼生成與解析技術(shù),還可以在此基礎(chǔ)上繼續(xù)擴(kuò)展,生成更加炫酷的二維碼藝術(shù)圖案,同時(shí)該方法也可廣泛應(yīng)用于其他相關(guān)領(lǐng)域。

        【參考文獻(xiàn)】

        [1]劉蓮,等.基于Android手機(jī)的二維碼識(shí)別生成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2018(12).

        [2][美]WESLEY J. CHUN. Core python programmining[M].2012(1).

        [3]朱亞林.一種基于Python的二維碼傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中小學(xué)電教,2018(12).

        [4]python.org.http.server—HTTP servers. https://docs.python.org/3.6/library/http.server.html. 2018.

        猜你喜歡
        二維碼解析
        可以吃的二維碼
        三角函數(shù)解析式中ω的幾種求法
        二維碼
        童話世界(2020年32期)2020-12-18 18:15:41
        睡夢解析儀
        電競初解析
        商周刊(2017年12期)2017-06-22 12:02:01
        讓嚴(yán)肅的二維碼呆萌起來
        相機(jī)解析
        二維碼,別想一掃了之
        黑人巨大无码中文字幕无码| 日本师生三片在线观看| 蜜臀一区二区三区精品| 亚洲人精品亚洲人成在线| 18无码粉嫩小泬无套在线观看| 亚洲AV日韩Av无码久久| 中文字幕亚洲五月综合婷久狠狠| 国产日韩精品suv| 日日躁夜夜躁狠狠久久av| 亚洲精品亚洲人成在线播放| 国产午夜三级精品久久久| 免费人成小说在线观看网站 | 9久久婷婷国产综合精品性色| 一区二区三区av波多野结衣| 久久艹影院| 亚洲中文字幕第二十三页| 一区二区三区高清在线观看视频 | 国产欧美亚洲精品第二区首页| av天堂网手机在线观看| 看全色黄大色黄大片 视频| 免费无码成人av在线播| 一区二区三区四区亚洲综合| 国产一区二区三区在线大屁股| 日本精品无码一区二区三区久久久| 爽妇网国产精品| 91九色国产在线观看| 男人天堂网2017| 337人体做爰大胆视频| 国产亚洲欧美在线播放网站| 天堂免费av在线播放| 99久久人妻无码精品系列| 91av手机在线观看| 国产美女高潮流的白浆久久| 免费a级毛片又大又粗又黑| 无码国产午夜福利片在线观看| 国产91在线|亚洲| 日本在线一区二区三区视频观看 | 人妻久久久一区二区三区蜜臀| 秋霞午夜无码鲁丝片午夜精品| 免费va国产高清不卡大片| 免费一区二区三区女优视频|