当前位置:
首页 > temp > python入门教程 >
-
Python实用工具,pyqt5模块,Python实现自动生成艺术签名的小工具
前言:
利用pyqt5实现一个简单的GUI。
废话不多说,让我们愉快地开始吧~
开发工具
Python版本:3.6.4
相关模块:
requests模块;
PyQt5模块;
pillow模块;
以及一些python自带的模块。
环境搭建
安装python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
原理说起来蛮简单的,首先,去找个可以根据输入的姓名来为你生成艺术签名的网站:
http://www.jiqie.com/a/14.htm
上面那个网站大概长这样子:
简单抓包(就是F12打开开发者工具或鼠标右键审查元素,然后点击一下给我设计,看下生成艺术签名需要构造哪些请求,简单分析一下就行)可以发现请求下图中这个链接就可以返回生成的艺术签名图片链接地址了:
请求时需要携带的参数如下:
很容易可以分析出:
1 id: 你的名字
2 zhenbi: 固定值
3 id1和id2: 艺术签名类型相关参数
4 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'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界面呗,大概长这样子:
其中GUI中的图片可以用QLabel()来显示,一个简单的例子如下:
1 show_label = QLabel()
2 show_image = Image.open('resource/image/ori.jpg').convert('RGB')
3 fp = io.BytesIO()
4 show_image.save(fp, 'JPEG')
5 qtimage = QtGui.QImage()
7 qtimage.loadFromData(fp.getvalue(), 'JPEG')
8 qtimage_pixmap = QtGui.QPixmap.fromImage(qtimage)
9 show_label.setPixmap(qtimage_pixmap)
基本都是pyqt5的操作。
文章到这里就结束了,感谢你的观看,关注我每天分享Python小工具系列,下篇文章分享PyQt5+qrcode制作二维码生成工具
为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。
出处:https://www.cnblogs.com/daimubai/p/15147390.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数