你有没有见过彩色的,会动的二维码?比游戏还刺激的那种(狗头):
或者是保熟的二维码(不熟我把它吃了):
还有这个,当年要是被王司徒扫到了,肯定等不及在两军阵前发表高论就气倒了:
这些二维码虽然鬼畜了起来,但是并不影响它作为二维码的原始功能,不信可以试试,照样能扫出来~
这是一位名叫 Lars heuer 的小哥制作的一款二维码编辑器 Segno,让黑白的二维码世界亮了起来,在 GitHub 上收获了 200 多颗星:
这款编辑器可以把二维码的背景换成不同的颜色,图片甚至是 gif 图片:
并且全部程序不需要任何依赖项,并且支持多种格式,快来康康。
如何给二维码换装?
要想给二维码换装首先我们得准备一个二维码还有一件“衣服”。
其中二维码可以通过函数生成,只需要填上你希望扫描二维码之后显示出的文字或者网址之类的信息。
“衣服”就是背景图啦,多种格式的图片和鬼畜动图都可以。
具体到操作层面应该怎么做呢?
Lars heuer 准备了两个库:qrcode-artistic 和 Pillow。
我们先把这两个库装上:
pip install qrcode-artistic pip install Pillow
然后用 segno.make () 生成一个二维码,在函数中填上扫描二维码显示出的内容。
有了生成函数之后,在转化函数 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)
等运行完毕,你就能在项目文件中找到带有各种背景的二维码了~
什么原理?
其实道理也很简单。
二维码能修改部分背景是因为二维码中不同的区域,承担不同的功能,并且可以自定义颜色。
例如很明显的一点,常见的二维码在三个角上有较大的像素块(标红),用来定位:
在三个大像素块旁边的黑色像素块(标红)用来设置格式信息:
而左下和右上两个大像素块旁边的黑色像素块(标红)用来确定版本信息等等:
因此,当我们自定义这些区域的颜色时,就可以改变二维码的背景了。
大开脑洞来试试吧,更细节的信息可以在文末链接中找到~
参考链接:
[1]https://github.com/heuer/segno
[2]https://segno.readthedocs.io/en/stable/colorful-qrcodes.html