【趣味编程】带背景的二维码

2022-06-23 18:55:27 浏览数 (1)

最近想做点有意思的事情。思来想去,能做点什么?最后想到,可以整理一些趣味编程案例进行分享。一方面能够拓展自己的编程知识面,另一方面,完成后确实能够增加自己的满足感。

写在前面

(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代码即可。后续还会继续为大家整理有意思的编程实验,希望大家喜欢。一起加油吧,各位。


文章首发于“元坑昊思迹”公众号,欢迎大家关注,了解更多元坑昊的所思所想。

元坑昊思迹公众号二维码元坑昊思迹公众号二维码

0 人点赞