前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【趣味编程】带背景的二维码

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

原创
作者头像
元坑昊
发布2022-06-23 18:55:27
7840
发布2022-06-23 18:55:27
举报
文章被收录于专栏:元坑昊思迹元坑昊思迹

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

写在前面

(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
复制
import cv2
from MyQR import myqr
from PIL import Image

解析微信二维码链接

代码语言:python
复制
# 微信二维码图片路径
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
复制
# 背景图路径
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
复制
img = Image.open(target_path)img.show()

最终效果

最终的效果如下所示(借助JupyterLab进行单步调试):

图片
图片

总结

本文分享了如何生成带背景的微信二维码,感觉效果还挺赞。不用很复杂的代码实现,只需不到二十行的Python代码即可。后续还会继续为大家整理有意思的编程实验,希望大家喜欢。一起加油吧,各位。


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

图片
图片

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 效果展示
  • 如何实现
  • 相关依赖
    • OpenCV
      • mypr
        • Image
        • 相关源码
          • 引入相关的库
            • 解析微信二维码链接
              • 生成带背景的二维码
                • 展示生成的图片
                  • 最终效果
                  • 总结
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档