作者:小小明

效果展示

动态二维码

哆啦A梦-1

用头像作底图的个人微信二维码

a-1

多张二维码组合动图

r

动态二维码的制作

首先打开个人开发的二维码生成器:

image-20210104115733045

然后输入二维码要保存的网址、二维码保存位置,以及动图所在位置:

image-20210104115921994

并点击生成二维码即可看到上面的效果!

然后就顺利的得到这张动态二维码图片:

image-20210104120200184

二维码的生成工具的开发

完整代码:

__author__ = 'xiaoxiaoming'

import PySimpleGUI as sg
from MyQR import myqr

sg.change_look_and_feel("LightBlue")
layout = [
    [sg.Text("请输入二维码的网址或英文字符串(不支持中文):")],
    [sg.In(size=(60, 1), key="words")],
    [sg.Text("图片保存位置(文件名以底图为准):")],
    [sg.In(size=(53, 1), key="save_path"), sg.FolderBrowse('游览', target='save_path')],
    [sg.Text("底图所在位置(不传表示不设置底图,支持多选会同时生成多张二维码):")],
    [sg.In(size=(53, 1), key="bg_filename"), sg.FilesBrowse('游览', target='bg_filename')],
    [sg.Button('生成二维码', enable_events=True, key="start")],
    [sg.Text(size=(50, 3), 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打包,最终打包出来的程序无法运行,因为有些库未打包成功,用上述命令打包即可解决这个问题。

如何用头像作底图制作个人微信二维码

首先,我们保存微信自己的二维码图片,然后用游览器识别该二维码获取到其中的网址,然后发给电脑。

对于这步呢,我用了我十年前开发的二维码工具进行识别:

image-20210104121346649

获得个人微信二维码的网址是:https://u.wechat.com/EGgQY5Tegaxxxxx

然后使用我用python开发的工具生成二维码:

image-20210104121558304

多张二维码组合动图制作

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

image-20210104122001234

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

image-20210104122142148

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

image-20210104122431876

然后打开Imagine软件:

image-20210104122538822

点击工具->动画作坊

image-20210104122626464

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

image-20210104122754326

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

image-20210104122849068

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

image-20210104123031048

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

image-20210104125403783

然后保存即可!

动图资源

哆啦A梦


本文转载:CSDN博客