Python qrcode二维码操作——(一)简单使用qrcode
既然我們是要對(duì)二維碼進(jìn)行創(chuàng)建和解析,那我們就必須先來(lái)認(rèn)識(shí)一下什么是二維碼:
二維碼是一種在一維碼基礎(chǔ)上擴(kuò)展出來(lái)的可讀性條碼,用黑白矩形圖案表示二進(jìn)制數(shù)據(jù);那么問(wèn)題又來(lái)了,一維碼又是什么?下面我們經(jīng)常會(huì)在包裝袋上面看到的條形碼:
這就是一維碼,我們可以看見(jiàn)它是由長(zhǎng)度相同,粗細(xì)不同的線條構(gòu)成,那么他是什么存儲(chǔ)數(shù)據(jù)的呢?那我們就要找不同點(diǎn),粗細(xì)是他們的變量,即用寬度存儲(chǔ)數(shù)據(jù),這是一維方案;
二維碼就是在一維碼的基礎(chǔ)上,長(zhǎng)度和寬度都記錄著數(shù)據(jù),這就是上面說(shuō)的在一維的基礎(chǔ)上又增加一個(gè)維度;二維碼還有一維碼沒(méi)有的定位點(diǎn)和容錯(cuò)機(jī)制,容錯(cuò)機(jī)制可以在沒(méi)有辨別全部條碼的時(shí)候正確還原條碼上的信息,這樣就能保證在條碼有破損的時(shí)候還能夠正確還原;
二維碼的種類有很多,這里就不贅述了,下面放出我博客的二維碼來(lái)結(jié)束這一趴:
那么我們接下來(lái)就來(lái)學(xué)習(xí)一下qrcode庫(kù)的使用:
import qrcode # 導(dǎo)入庫(kù)img = qrcode.make('https://blog.csdn.net/u014663232') # 最后會(huì)返回一個(gè)qrcode.image.pil.PilImage對(duì)象,最后會(huì)返回一個(gè)二維碼圖片對(duì)象 img.save('geeknuo_csdn.png') # 調(diào)用save()方法將圖片對(duì)象保存下來(lái)
接下來(lái)我們通過(guò)原型來(lái)看下,它都做了些什么:
我們可以看見(jiàn)make()方法在開(kāi)始創(chuàng)建了一個(gè)QRCode對(duì)象,然后調(diào)用add_data()方法,將我們數(shù)據(jù)信息添加了進(jìn)去,最后調(diào)用make_image()方法返回了圖片對(duì)象;
那么我們可以推出最終產(chǎn)生圖片的地方肯定在make_image()里面,我們接下來(lái)看:
? 1)首先檢查數(shù)據(jù)有沒(méi)有編譯,如果沒(méi)有編譯,就需要先進(jìn)行編譯;
? 2)image_factory我這邊理解的是生成器,這邊我們可以指定生成器,如果沒(méi)有指定的話,這里就會(huì)使用PIL作為生成器,這就是為什么依賴pillow庫(kù)的原因;
? 3)最后就是生成圖像并返回了,這里還涉及到了等等的參數(shù),下面再詳細(xì)說(shuō)明;
既然make()最開(kāi)始是創(chuàng)建了一個(gè)QRCode對(duì)象,那么我們先來(lái)看下QRCode()中有什么:
那么我們可以看見(jiàn)有這里有6個(gè)參數(shù):
? 1)version 表示二維碼的版本號(hào),一種有1~40個(gè)版本,最小是21*21,每增加一個(gè)版本會(huì)增加4個(gè)尺寸(注意:這里的尺寸并不是指生成圖片的大小,而是二維碼的長(zhǎng)寬被分成了多少份)
? 2)error_correction 指的是糾錯(cuò)容量,這就是為什么在二維碼上面放張圖片還可以被識(shí)別出來(lái)的原因,它一共有四個(gè)級(jí)別:
??????? ERROR_CORRECT_L:大約7%或更少的錯(cuò)誤能被糾正
??????? ERROR_CORRECT_M(默認(rèn)):大約15%或更少的錯(cuò)誤能被糾正
??????? ERROR_CORRECT_Q:大約25%或更少的錯(cuò)誤能被糾正
??????? ERROR_CORRECT_H:大約30%或更少的錯(cuò)誤能被糾正
? 3)box_size 指的是生成圖片的像素,所以這里是定義大小的,我們可以看見(jiàn)上面,默認(rèn)為10
? 4)border 表示二維碼邊框的寬度,同樣的,上面默認(rèn)是4,也是最小值
? 5)image_factory 的參數(shù)繼承了qrcode.image.base.BaseImage類,其中可以選擇的類保存在模板根目錄的image文件夾下
???????
? 6)mask_pattern 選擇生成圖片的掩模,掩模這邊一句兩句說(shuō)不清楚,可以自行百度,或者看后面的鏈接,我們來(lái)看下掩模的過(guò)程(圖片來(lái)自:http://www.360doc.com/content/16/0919/08/9261962_591906164.shtml):
???????
總結(jié)
以上是生活随笔為你收集整理的Python qrcode二维码操作——(一)简单使用qrcode的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python wifi模块
- 下一篇: MATLAB Linear Analys