4

各类炫酷二维码的制作(附带GUI工具开发)

 3 years ago
source link: https://blog.csdn.net/as604049322/article/details/112172580
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者:小小明

动态二维码

哆啦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梦


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK