电子签名生成(在线制作艺术签名)

在线制作艺术签名(电子签名生成)徐大兄弟2021-05-29 11:03:15

相关文件

关注并私信小编给大家分享源码

开发工具

安装python并添加到环境变量,pip安装需要的相关模块即可。

原理介绍

原理说起来蛮简单的,首先,去找个可以根据输入的姓名来为你生成艺术签名的网站:

http://www.jiqie.com/a/14.htm

网站就是这个样子的哟

用Python带大家写个自动生成艺术签名的小工具哟

http://www.jiqie.com/a/14.htm

简单抓包(就是F12打开开发者工具,然后点击一下给我设计,看下生成艺术签名需要构造哪些请求,简单分析一下就行)可以发现请求下图中这个链接就可以返回生成的艺术签名图片链接地址了:

用Python带大家写个自动生成艺术签名的小工具哟

请求时需要携带的参数如下:

用Python带大家写个自动生成艺术签名的小工具哟

很容易就可以分析出:

id: 你的名字zhenbi: 固定值
id1和id2: 艺术签名类型相关参数
id3和id4: 艺术签名字体颜色相关参数

于是我们很容易就可以实现根据输入的姓名生成艺术签名啦:

def generate(self):
    font2ids_dict = {                        '一笔艺术签': ['901', '15'],                        '连笔商务签': ['904', '15'],                        '一笔商务签': ['905', '14'],                        '真人手写': ['343', '14'],                        '卡通趣圆字': ['397', '14'],                        '暴躁字': ['380', '14']
                }
    color2ids_dict = {                        'Black': ['#000000', '#FFFFFF'],                        'Blue': ['#0000FF', '#FFFFFF'],                        'Red': ['#FF0000', '#FFFFFF'],                        'Green': ['#00FF00', '#FFFFFF'],                        'Yellow': ['#FFFF00', '#FFFFFF'],                        'Pink': ['#FFC0CB', '#FFFFFF'],                        'DeepSkyBlue': ['#00BFFF', '#FFFFFF'],                        'Cyan': ['#00FFFF', '#FFFFFF'],                        'Orange': ['#FFA500', '#FFFFFF'],                        'Seashell': ['#FFF5EE', '#FFFFFF']
                    }
    url = 'http://www.jiqie.com/a/re14.php'
    headers = {                'Referer': 'http://www.jiqie.com/a/14.htm',                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',                'Host': 'www.jiqie.com',                'Origin': 'http://www.jiqie.com'
            }
    ids_0 = font2ids_dict[self.font_combobox.currentText()]
    ids_1 = color2ids_dict[self.color_combobox.currentText()]
    data = {                'id': self.name_edit.text(),                'zhenbi': '20191123',                'id1': ids_0[0],                'id2': ids_0[1],                'id3': ids_1[0],                'id5': ids_1[1]
            }
    res = requests.post(url, headers=headers, data=data)
    image_url = re.findall(r'class="aligncenter" src="(.*?)"', res.text)[0]    self.show_image_ext = image_url.split('.')[-1].split('?')[0]
    res = requests.get(image_url)
    fp = open('tmp.%s' % self.show_image_ext, 'wb')
    fp.write(res.content)
    fp.close()    self.show_image = Image.open('tmp.%s' % self.show_image_ext).convert('RGB')    self.updateimage()
    os.remove('tmp.%s' % self.show_image_ext)

然后再用pyqt5做个简单的GUI界面呗,大概长这样子:

用Python带大家写个自动生成艺术签名的小工具哟

其中GUI中的图片可以用QLabel()来显示,一个简单的例子如下:

show_label = QLabel()
show_image = Image.open('resource/image/ori.jpg').convert('RGB')
fp = io.BytesIO()
show_image.save(fp, 'JPEG')
qtimage = QtGui.QImage()
qtimage.loadFromData(fp.getvalue(), 'JPEG')
qtimage_pixmap = QtGui.QPixmap.fromImage(qtimage)
show_label.setPixmap(qtimage_pixmap)

其他好像也没啥了,都是pyqt5的基本操作(定义一下组件,然后自己简单布局一下,给按钮设置一下触发的事件函数等等)。

就这样呗,大功告成了,完整源代码详见相关文件~

大家有啥问题或者有啥疑问都可以过来找小编的哟!关注私信小编就可以啦。或者在下方评论哟!!

(0)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@ZLME.COM 举报,一经查实,立刻删除。

相关推荐