用 Python 制作炫酷吊炸天的二维码!

Python中文社区

共 5747字,需浏览 12分钟

 ·

2021-04-29 21:20

各种酷炫二维码的介绍

当今社会,二维码用的地方越来越多了。你的微信二维码,微信付款吗、支付宝付款码,这基本成了每个人的必备品了。

今天这篇文章,就带着大家制作几款二维码,分别是:静态二维码单图动态二维码多图动态二维码

下面先来看看最终的效果:

① 单图动态二维码

② 静态二维码


③ 多图动态二维码


自己开发的二维码生成器

这款“二维码生成器”工具,我已经开发出来。下面给大家简单介绍一下它的用法。

首先,打开我个人开发的二维码生成器,如下图所示。

接着,输入二维码要保存的网址、二维码保存位置,以及动图所在位置。

最后,点击“生成二维码”,即可看到最终生成的效果!

从下图可以看到,这张动态二维码已经生成。

开发代码

这么酷炫的工具是怎么开发出来的呢?废话不多说,直接上代码吧!

__author__ = 'xiaoxiaoming'

import PySimpleGUI as sg
from MyQR import myqr

sg.change_look_and_feel("LightBlue")
layout = [
    [sg.Text("请输入二维码的网址或英文字符串(不支持中文):")],
    [sg.In(size=(601), key="words")],
    [sg.Text("图片保存位置(文件名以底图为准):")],
    [sg.In(size=(531), key="save_path"), sg.FolderBrowse('游览', target='save_path')],
    [sg.Text("底图所在位置(不传表示不设置底图,支持多选会同时生成多张二维码):")],
    [sg.In(size=(531), key="bg_filename"), sg.FilesBrowse('游览', target='bg_filename')],
    [sg.Button('生成二维码', enable_events=True, key="start")],
    [sg.Text(size=(503), text_color='red', key="out", text='底图设置一张gif动图即可生成动态二维码')],
    [sg.Image(key="-IMAGE-")],
]
window = sg.Window("动态二维码生成器(小小明个人开发)", layout)

def create_qr(words, save_path, picture):
    if picture == "":
        imgpaths = [None]
    else:
        imgpaths = picture.split(";")
    save_names = []
    save_path = save_path.rstrip("/").rstrip("\\")
    for idx, imgpath in enumerate(imgpaths, 1):
        i = imgpath.rfind('/')
        j = imgpath.rfind('\\')
        start_p = max(i, j) + 1
        end_p = imgpath.rfind('.')
        filename = imgpath[start_p:end_p]
        save_name = f"{save_path}/{filename}-{idx}.gif"
        myqr.run(
            # 该链接表示你想要生成二维码的链接。
            words=words,
            version=10,  # 容错率
            level='H',  # 纠错水平,范围是L、M、Q、H,从左到右依次升高
            colorized=True,  # False为黑白
            contrast=1.5,  # 用以调节图片的对比度,1.0 表示原始图片。
            brightness=1.0,  # 用来调节图片的亮度。
            save_name=save_name,  # 存储的文件名
            # 背景图片的路径,你如果给的是".png/.jpg"等静态图片,最终生成的就是静态二维码!
            # 背景图片的路径,你如果给的是".gif"等动态图片,最终只需要保存为".gif",生成的就是动态二维码!
            picture=imgpath
        )
        save_names.append(save_name)
    return save_names

while True:
    event, values = window.read()
    if event == "Exit" or event == sg.WIN_CLOSED:
        break
    print(event, values)
    if event == 'start':
        try:
            save_names = create_qr(values['words'], values['save_path'], values['bg_filename'])
            window["-IMAGE-"].update(filename=save_names[-1])
            window["out"].update(f"二维码图片已经保存到" + ",".join(save_names))
        except Exception as e:
            window["out"].update(str(e))

window.close()

关于MyQR:

https://github.com/sylnsfar/qrcode/blob/master/README-cn.md

安装:

pip install myqr

打包exe:

python -m PyInstaller -wF myqr_gui.py -i C:\Users\Think\Pictures\ico\a.ico

注意:在虚拟环境下,直接使用pyinstaller打包,最终打包出来的程序无法运行,因为有些库未打包成功,用上述命令打包即可解决这个问题。

给你的微信二维码,添加自定义背景图

猛地一看标题,大家可能不太明白这是啥意思,我大致为你说明一下。

在微信中,我们本身可以保存自己的二维码,但是一般都是没有背景样式的。如果你想将女朋友的照片,与你的个人二维码融合起来,应该怎么办呢?下面我来好好给你讲述一下。

首先,我们保存自己的微信二维码图片,将该二维码解码还原为网址。

二维码解码还原为网址,我使用我十年前开发的二维码工具进行识别:

获取到链接节后,再使用我用python开发的二维码生成工具:

多张动态二维码

选择多张底图,批量生成二维码:

然后点击生成二维码(可能需要多等一会):

下面是生成的4张对应的二维码图片:

然后打开Imagine软件:


点击工具->动画作坊

点击插入帧,选择图片并打开:

拖动好顺序后,全选图片点击帧属性:

我统一设置为700毫秒,然后确定:

然后将动画属性设置为循环:

然后保存即可。

更多阅读



5 分钟快速上手 pytest 测试框架


5分钟掌握 Python 随机爬山算法


5分钟快速掌握 Adam 优化算法

特别推荐




点击下方阅读原文加入社区会员

浏览 31
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报