你有沒有見過彩色的,會(huì)動(dòng)的二維碼?比游戲還刺激的那種(狗頭):
或者是保熟的二維碼(不熟我把它吃了):
還有這個(gè),當(dāng)年要是被王司徒掃到了,肯定等不及在兩軍陣前發(fā)表高論就氣倒了:
這些二維碼雖然鬼畜了起來,但是并不影響它作為二維碼的原始功能,不信可以試試,照樣能掃出來~
這是一位名叫 Lars heuer 的小哥制作的一款二維碼編輯器 Segno,讓黑白的二維碼世界亮了起來,在 GitHub 上收獲了 200 多顆星:
這款編輯器可以把二維碼的背景換成不同的顏色,圖片甚至是 gif 圖片:
并且全部程序不需要任何依賴項(xiàng),并且支持多種格式,快來康康。
如何給二維碼換裝?
要想給二維碼換裝首先我們得準(zhǔn)備一個(gè)二維碼還有一件“衣服”。
其中二維碼可以通過函數(shù)生成,只需要填上你希望掃描二維碼之后顯示出的文字或者網(wǎng)址之類的信息。
“衣服”就是背景圖啦,多種格式的圖片和鬼畜動(dòng)圖都可以。
具體到操作層面應(yīng)該怎么做呢?
Lars heuer 準(zhǔn)備了兩個(gè)庫(kù):qrcode-artistic 和 Pillow。
我們先把這兩個(gè)庫(kù)裝上:
pip install qrcode-artistic pip install Pillow
然后用 segno.make () 生成一個(gè)二維碼,在函數(shù)中填上掃描二維碼顯示出的內(nèi)容。
有了生成函數(shù)之后,在轉(zhuǎn)化函數(shù) qrcode.to_artistic,background 之后輸入你想要替換的背景,可以輸入.png,.jpg,.gif 等格式的圖片。
最后在 target 之后給輸出的二維碼命名,方便在文件夾中找到。
>>> import segno >>> qrcode = segno.make('1', error='h') >>> qrcode.to_artistic(background='2', target='3', ... scale=8)
等運(yùn)行完畢,你就能在項(xiàng)目文件中找到帶有各種背景的二維碼了~
什么原理?
其實(shí)道理也很簡(jiǎn)單。
二維碼能修改部分背景是因?yàn)槎S碼中不同的區(qū)域,承擔(dān)不同的功能,并且可以自定義顏色。
例如很明顯的一點(diǎn),常見的二維碼在三個(gè)角上有較大的像素塊(標(biāo)紅),用來定位:
在三個(gè)大像素塊旁邊的黑色像素塊(標(biāo)紅)用來設(shè)置格式信息:
而左下和右上兩個(gè)大像素塊旁邊的黑色像素塊(標(biāo)紅)用來確定版本信息等等:
因此,當(dāng)我們自定義這些區(qū)域的顏色時(shí),就可以改變二維碼的背景了。
大開腦洞來試試吧,更細(xì)節(jié)的信息可以在文末鏈接中找到~
參考鏈接:
[1]https://github.com/heuer/segno
[2]https://segno.readthedocs.io/en/stable/colorful-qrcodes.html
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。