講解開源專案:用 Python 生成有“靈魂”的二維碼
本文作者:HelloGitHub-LITTLECHIEH
這是 HelloGitHub 推出的《講解開源專案》系列,今天給大家推薦一個 Python 開源生成二維碼的專案——qrcode
一、介紹
1.1 二維碼
二維碼又稱二維條碼,常見的二維碼為 QR Code,QR 全稱 Quick Response。是一個近幾年來移動裝置上超流行的一種編碼方式,在現在的生活中二維碼隨處可見。我們可以用它支付、瀏覽網站等,為什麼他會這麼流行?下面說幾個特點:
- 可儲存的資訊量大:可容納多達 1850 個大寫字母或 2710 個數字或 1108 個位元組或 500 多個漢字。
- 容錯能力強:具有糾錯功能,這使得二維條碼因穿孔、汙損等引起區域性損壞時,照樣可以正確得到識讀,損毀面積達 30% 仍可恢復資訊。
- 譯碼可靠性高:它比普通條碼譯碼錯誤率百萬分之二要低得多,誤位元速率不超過千萬分之一。
- 鐳射可識別。
比如我們現在常見的公眾號二維碼,他就利用了二維碼容錯能力強的特點,在二維碼中間加入了公眾號的圖示。雖然中間的圖片遮蓋了一部分二維碼的真實資料,但因為其強大的容錯能力,所以並沒有影響二維碼要傳遞的資料。
1.2 二維碼的組成
一圖勝千言,好了這裡二維碼的基本知識就介紹完成了。
1.3 生成二維碼庫
二維碼是一個很方便的傳遞資訊的載體,但是像上面黑白的二維碼感覺非常缺少‘靈魂’。下面就介紹今天的主角:qrcode
這是一個由 Python 編寫的二維碼生成器,支援生成 GIF 動態、圖片二維碼,讓你的二維碼變得有趣起來。
專案地址:https://github.com/sylnsfar/qrcode
二、qrcode 庫的優點
為什麼需要使用到這個二維碼生成器來生成二維碼呢?
- 使用簡單:快速上手,僅需 2 行程式碼,即可開始使用!
- 在二維碼中增加圖片:可以讓使用者通過二維碼中的圖片,初步瞭解該二維碼是和什麼東西有關。(該二維碼加入了 HG 的 logo)
- 在二維碼中增加動圖:通過動圖,讓二維碼活過來。
- 使用方式多樣:有以下的 3 種使用方式
- 命令列方式
- 匯入檔案方式(import)
- 可執行檔案
- 用就對了:我不要你覺得,我要我覺得
滑稽
三、快速上手
演示環境
作業系統:Windows | Python 版本:3.5
3.1 安裝
我們通過 Python 的 pip 包管理工具進行安裝:
pip install myqr
注:此處可能需要升級 pip,升級命令
pip install --upgrade pip
安裝完成之後,就可以直接在命令列中使用了!下面逐一講解各種二維碼的生成方法
3.2 普通二維碼
首先生成一個普通二維碼
開啟 cmd
輸入命令
bash myqr https://github.com -n helloword.png
引數-n
:生成二維碼的檔名
這樣就會得到一個二維碼圖片,生成的圖片儲存在了當前目錄,後面可以通過傳入引數修改預設目錄。
3.3 彩色二維碼
先準備一張圖片放在目錄下(方形的圖片效果最好)
將圖片名稱修改為 github.jpg(字尾根據自己的照片格式而定)
- 在命令列中輸入:
bash myqr https://github.com -n mypicture.png -p github.jpg -c
引數:-n
:生成二維碼的名稱-p
:二維碼加入的圖片,支援 jpg、gif、png 格式-c
:選擇是否生成彩色二維碼,如果不設定預設為黑白- 更多引數請看下面附錄部分
3.4 動態二維碼
步驟和彩色二維碼的方法一致,但是需要注意:
- 增加圖片為 gif
- 修改生成二維碼的字尾為 gif
四、附錄
4.1 MyQR 引數
從官方文件整理的常用引數如下:
-n
:生成二維碼的名稱-p
:二維碼加入的圖片,支援.jpg
、.gif
、.png
、.bmp
格式-c
:選擇是否生成彩色二維碼,如果不設定預設為黑白-v
:控制邊長,範圍是 1 至 40,數字越大邊長越大-l
:控制糾錯水平,範圍是 L、M、Q、H 從左到右依次升高-d
:控制輸出二維碼的儲存位置-con
:用以調節圖片的對比度,1.0 表示原始圖片,更小的值表示更低對比度,更大反之。預設為 1.0-bri
:用來調節圖片的亮度,其餘用法和取值與-con
相同
4.2 cmd 切換碟符
開啟命令列有個小技巧,可以將 cmd 迅速切換到想要的目錄,避免了切換碟符的麻煩:
利用檔案管理,找到目標資料夾
頂部位址列輸入 cmd,然後‘回車‘
- 切換碟符的坑:直接切換碟符會失敗
4.3 二維碼分類介紹
二維碼有以下幾種分類
- 黑白和彩色碼
- 黑白碼
- 彩色碼
- 融合和視覺碼
- 融合碼:就是將內容與二維碼融合使它們成為一個整體,圖片由二維碼組成,二維碼就是圖片的一部分。這種比較適合使用構造簡單的圖片或者文字做美化主體內容
- 視覺碼:以圖片為背景,再在圖片上構建很多特殊的點,這些點不會影響背景的視覺效果
- 藝術碼
- 藝術二維碼,就是將二維碼進行的各個“碼眼”按照設計師的構思進行分析、拆解、合併,再在那些“碼眼”區域填充上一些小素材元素,最後形成一個別具特色二維碼。
- 藝術二維碼,就是將二維碼進行的各個“碼眼”按照設計師的構思進行分析、拆解、合併,再在那些“碼眼”區域填充上一些小素材元素,最後形成一個別具特色二維碼。
五、最後
以上就是本篇文章的全部內容了,相信你對二維碼更加了解了。並且對 qrcode 庫的常用引數有了一定了解,那就快去生成一個有趣、有‘靈魂’的二維碼吧!
有好玩的庫,但不會用,看著乾著急?歡迎告訴我們,同時也歡迎加入我們。我們的願景:
“讓對開源感興趣的人不再畏懼,開源專案的發起者不再孤單。”
六、參考資料
- 小技巧|還在用黑白二維碼?弱爆了!教你點新的技能!
- PDF 淺談 QR Code
- QRcode
『講解開源專案系列』——讓對開源專案感興趣的人不再畏懼、讓開源專案的發起者不再孤單。跟著我們的文章,你會發現程式設計的樂趣、使用和發現參與開源專案如此簡單。歡迎留言聯絡我們、加入我們,讓更多人愛上開源、貢獻開源