最近想做点有意思的事情。思来想去,能做点什么?最后想到,可以整理一些趣味编程案例进行分享。一方面能够拓展自己的编程知识面,另一方面,完成后确实能够增加自己的满足感。
写在前面
(1)我计划分享的趣味编程都会基于 Python 语言,理由是 Python 便于开发与调试,而且 Python 库很多,用 Python 能干很多有意思的事情。
(2)所有分享内容仅用于娱乐与学习。
效果展示
今天要给大家分享是:替换二维码的背景。可以将自己的微信二维码或者公众号二维码转成带背景的二维码。先来展示一下【元坑昊思迹】公众号的二维码:
这里需要说明一点,微信的个人二维码是可以换样式的,但不支持替换成自定义的二维码,只能随机切换。个人觉得虽然能够换换样式,但不满足自己的需求。因为不能上下切换,只能随机切。我曾经花了5分钟才切回之前觉得还可以的一个样式,太难了。
有同学可能会问,微信都不支持自定义二维码,你弄个二维码转换有什么用呢?个人感觉,可以截图在其他地方用,比如说邮件、名片等等。特别是对于公众号二维码,用处还是有的。当然,这只是我个人的自嗨行为,介意勿用。
如何实现
对于如何生成有背景的二维码,网上一搜就知道答案:myqr,一个Python库。简单易用,安装后,命令行输入链接以及背景图即可。
但,本次要分享的是“将微信二维码转成背景二维码”,需要多做一步,即从微信二维码中获取对应的链接信息。所以,步骤有二:
- 从微信二维码中获取链接信息
- 将链接信息生成有背景的二维码
相关依赖
要完成本文介绍内容,需要准备一台带Python环境电脑。如何装Python,请自行搜索。这里只列出完成本次编程需要用到的Python库。
OpenCV
本次编程依赖OpenCV库,用于解析微信二维码中的链接。具体如下:
- opencv-python==4.5.2.52
- opencv-contrib-python==4.5.2.52
命令如下:
代码语言:shell复制pip install opencv-python==4.5.2.52 opencv-contrib-python==4.5.2.52
为什么要用OpenCV,因为微信二维码有其特定的解码方式,使用pyzbar是不行的。另外,对OpenCV的版本也有要求,版本不能低于4.5.2,因为低版本没有微信二维码的解析方法。
另外,上述两个库的版本需要保持一致,否则会出现异常报错。
mypr
mypr库用于生成有背景的二维码,简单好用,无版本要求,直接装即可。
命令如下:
代码语言:shell复制pip install myqr
Image
Image库用于展示最后的二维码图片。本次实验不强依赖该库,因为myqr会生成二维码图片。使用该库只是为了方便效果展示。
相关源码
接下来,进入源码部分。代码很简单,不到20行。
引入相关的库
代码语言:python代码运行次数:0复制import cv2
from MyQR import myqr
from PIL import Image
解析微信二维码链接
代码语言:python代码运行次数:0复制# 微信二维码图片路径
source_picture_path = "source.jpg"
detect_obj = cv2.wechat_qrcode_WeChatQRCode()
img = cv2.imread(source_picture_path)
res, _ = detect_obj.detectAndDecode(img)
if len(res) > 0:
link_str = res[0]
生成带背景的二维码
代码语言:python代码运行次数:0复制# 背景图路径
background_picture_path = "background.png"
# 需要生成带背景图二维码的图片路径
target_path = "target.png"
myqr.run(
words=link_str,
picture=background_picture_path,
save_name=target_path,
colorized=True,
)
展示生成的图片
代码语言:python代码运行次数:0复制img = Image.open(target_path)img.show()
最终效果
最终的效果如下所示(借助JupyterLab进行单步调试):
总结
本文分享了如何生成带背景的微信二维码,感觉效果还挺赞。不用很复杂的代码实现,只需不到二十行的Python代码即可。后续还会继续为大家整理有意思的编程实验,希望大家喜欢。一起加油吧,各位。
文章首发于“元坑昊思迹”公众号,欢迎大家关注,了解更多元坑昊的所思所想。