999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-07-23 01:51:16岐艷芳
科技視界 2019年15期

岐艷芳

【摘 要】隨著掃碼支付等應(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;生成;解析

中圖分類號: TP391.44;TP393.092文獻(xiàn)標(biāo)識碼: A文章編號: 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ù)符號信息。它能將數(shù)字、英文字母、漢字、日文字母、特殊符號(如空格,%,/ 等)、二進(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能被識別。

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

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

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

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

1.2.2 編碼區(qū)域

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

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

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

數(shù)據(jù)和糾錯(cuò)碼:主要是存儲實(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ù)二維碼以及動態(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 動態(tài)二維碼的生成

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

設(shè)計(jì)步驟:先將上面的過程封裝為一個(gè)函數(shù),讀取Gif圖片,循環(huán)掃描Gif圖片中的所有幀數(shù),形成循環(huán)圖片列表,并將結(jié)果存到一個(gè)新的數(shù)組中,最后合并圖片組到新的gif文件中。就可得到動態(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)建圖片掃描對象

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

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

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

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

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

scanner.scan(qrCode)

data= ''#組裝解碼信息

for s in qrCode:

data+=s.data

delimg#刪除圖片對象

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

4 結(jié)語

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

【參考文獻(xiàn)】

[1]劉蓮,等.基于Android手機(jī)的二維碼識別生成系統(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.

主站蜘蛛池模板: 国产99视频免费精品是看6| 狠狠色丁香婷婷| 国产精品久久自在自线观看| 另类专区亚洲| 成人看片欧美一区二区| 国产欧美精品午夜在线播放| 午夜电影在线观看国产1区| 国产精品毛片在线直播完整版| 人妻一本久道久久综合久久鬼色| 亚洲成人一区二区三区| 亚洲一区二区日韩欧美gif| 青草精品视频| 国产午夜人做人免费视频中文 | 亚洲第一区在线| 日本欧美精品| 视频二区国产精品职场同事| 91色在线视频| av大片在线无码免费| 国产欧美网站| 精品免费在线视频| 婷婷六月综合网| 日韩av手机在线| 免费高清自慰一区二区三区| 亚洲精品午夜无码电影网| 国产91麻豆免费观看| 国产另类视频| 日本午夜影院| 欧美激情一区二区三区成人| 亚洲侵犯无码网址在线观看| 福利小视频在线播放| 亚洲欧美综合另类图片小说区| 国产自在线拍| 亚洲AV无码精品无码久久蜜桃| 婷婷综合色| 久久综合久久鬼| 美女被躁出白浆视频播放| 怡红院美国分院一区二区| 国产精品久久久久久久久久久久| 国产亚洲高清在线精品99| 狠狠干综合| 91精品久久久无码中文字幕vr| 72种姿势欧美久久久大黄蕉| 91精品视频播放| 日本不卡在线播放| 国产精品jizz在线观看软件| 四虎影视库国产精品一区| 国产精品深爱在线| 亚洲人视频在线观看| 国产不卡在线看| 欧洲欧美人成免费全部视频| 亚洲中文制服丝袜欧美精品| 国产av无码日韩av无码网站| 日本色综合网| 亚洲欧美国产五月天综合| a在线亚洲男人的天堂试看| 国产91麻豆视频| 久久精品国产精品青草app| 国产精品男人的天堂| 成年片色大黄全免费网站久久| 又爽又大又黄a级毛片在线视频 | 一本一本大道香蕉久在线播放| 日本a级免费| 22sihu国产精品视频影视资讯| 国产青青操| 99热国产这里只有精品9九| 伊人久久久久久久久久| 欧美精品不卡| 国产杨幂丝袜av在线播放| 网友自拍视频精品区| 国产草草影院18成年视频| 久久这里只有精品免费| 中文国产成人精品久久| 婷婷色狠狠干| 18禁影院亚洲专区| 综合人妻久久一区二区精品| 亚洲人视频在线观看| 亚洲天堂在线视频| 国产自无码视频在线观看| 亚洲欧美成人在线视频| 国产精品自在线天天看片| av尤物免费在线观看| 免费人成在线观看视频色|