牛逼!用Python为她设计专属签名软件
作者:闲欢
来源:Python 技术
晚上下班回来,我发现女朋友坐在书桌前"搞事情"。不禁有点惊讶,居然没有葛优躺,居然没有刷B站!!!
但是看她时而抓头,时而写些什么。
我就跑过去问:宝贝,你在干嘛呢?
她说:我今天签名字的时候发现自己写的名字好丑,回来就想着练一下,但是怎么都写不好。
"不要着急,先去刷刷视频歇一下。"
她丧气地走向了沙发...
看她这样,我心疼啊,得做点什么让她高兴一下。灵机一闪,不如就给她做个个性签名软件吧! 思路
说干咱就干!
略微想了一下,这事咱不能蛮干,毕竟不是专业的,搞一个那种实打实的艺术字还是有点难度的。我擅长 Python 啊,我去找个签名网站合作一下就行了。我带着技术,它带着接口,我们俩一拍即合!
打开百度,搜索关键词"艺术签名",马上出来一堆网站。我随便打开了一个,界面是这样子的:
网站首页
看起来还不错,咱们先看看你是不是一个好搭档(能够提供艺术字的接口)。
我直接打开开发者模式,然后在输入框输入"阿花",点击生成,界面上出现了艺术字。同时,我们来看看网络请求。在这些网络请求中,我注意到了两个请求,有可能跟我们的接口有关。
网络请求
接下来,咱们一个个查看这两个请求。打开第一个请求的详情,如下所示:
网络请求1
看到这个请求的参数,我就知道这是我们的目标,因为它包含了我们需要发送给网站后台的内容。我们再看一下请求预览便知道,这个请求返回的是一个 html 页面:
网络请求预览
返回的页面大体是对应着这个网页的内容,但是在艺术签名那里留了个空白,没有显示艺术签名。
网络请求响应
我们继续看响应内容,可以观察到那个空白处的html是这样的:
这很显然是一个以时间戳命名的图片。
我们再看看第二个请求,是不是请求的内容和这个图片名称一毛一样呢?
网络请求2
这意思很明显了,网站先返回一个页面,然后再请求一个图片,把图片加载到这个页面。
熟悉这个流程之后,我们签名部分就搞定了,即: 将姓名、字体参数发送请求,获取到一个 HTML; 解析 HTML,找到签名图片名称; 发送获取图片请求,得到签名图片。
签名部分搞定之后,剩下的就是画一个界面,让用户输入姓名、选择字体,然后调用签名接口就行。 实现请求签名图片
这个网站的请求为 post 请求,一共有四个参数: word: 姓名 fonts: 字体 sizes: 字体大小 fontcolor: 字体颜色 colors: 签名背景颜色
我感觉这个网站的字体大小、背景颜色、字体颜色都很符合我的口味,所以我就不打算改了。只需要输入名字和字体就行。
核心代码为: url = "http://www.kachayv.cn/" data = { "word": name, "fonts": mapping_list[font], "sizes": 60, "fontcolor": "#ffffff", "colors": "#FD5668" } result = requests.post(url, data=data) result.encoding = "utf-8" html = result.text print(html) p = re.compile("") match = p.findall(html) urlretrieve("http://www.kachayv.cn/cache/" + match[0], "./pic.jpg")
这里先获取签名图片的网址,然后使用 urlretrieve 方法保存到本地。设计和实现软件界面
界面内容也比较简单,我们只需要姓名输入框、字体下拉选择框和一个提交按钮就可以了。我们还是使用 tkinter 来简单画界面。
核心代码为: def draw_window(self): self.init_window = Tk() self.init_window.title("阿花专属签名设计") self.init_window.geometry("800x500") self.init_window.geometry("+400+200") # 姓名 self.name_label = Label(self.init_window, text="鼎鼎大名", font=("微软雅黑", 16), fg="black") self.name_label.grid(row=0, column=0, columnspan=1) self.name_entry = Entry(self.init_window, font=("宋体", 16)) self.name_entry.grid(row=0, column=1) # 选择字体模式 self.font_label = Label(self.init_window, text="字体", font=("微软雅黑", 16), fg="black") self.font_label.grid(row=0, column=5, columnspan=1) self.combox_list = ttk.Combobox(self.init_window, textvariable=StringVar()) self.combox_list.grid(row=0, column=6, sticky="W") self.combox_list["value"] = ("行书签", "超级艺术签", "潇洒签", "手写连笔字", "行草签", "花式签", "温柔女生", "个性签", "商务签", "正楷体", "楷书签", "情书签", "卡通可爱签") self.combox_list.current(0) # 选择第一个 # 触发按钮 self.button = Button(self.init_window, text="美好来袭", font=("微软雅黑", 16), command=self.get_sign) self.button.grid(row=1, column=3, rowspan=2, sticky="W") # 图片展示 self.pic_label = Label(self.init_window) self.pic_label.grid(row=3, column=1, rowspan=10, columnspan=5, sticky="NW")
这里面有一个麻烦的地方,就是网站的字体是类似于"19.ttf"这样子的,我肯定不能把这个显示在界面上,而 tkinter 的下拉选择框比较傻瓜,不能以 key-value 的形式传值。
没办法,不能在一棵树上吊死,我只能在中间加一个转换:在界面上显示人类看得懂的中文,获取到这个中文字体名之后,再跟网站需要的火星文做个映射。
界面运行之后,是这样子的:
运行界面 合体
我们将上面两部分的代码整合在一起,然后再运行,整个操作过程是这样的:
运行 后记
女朋友在沙发上躺了没多久,我把她喊到书房,说:我给你做了一个专属签名软件,你看看合不合胃口?
她尝试了一下,然后转过头来对我说:老公,你真棒!虽然界面丑了点,但是这么短时间就把我的烦恼解决了,谢谢你!
情侣生活就是这样的,平淡而朴实。其实这个问题根本不需要我动手做个丑陋的软件,她直接去网站上操作,几秒钟的事。但是,我花点时间给她做一个专属的,会让她更开心。其实她们并不需要你才华横溢,不需要你有多大本事,只需要你在她们需要的时候给她们温柔一击,在不经意间给她们一个惊喜,这就够了!
当了19年华为董事长,任正非尊称她孙总,为何曾3次递交辞呈能与任正非比肩的企业家不多,其中女性就更少了,但孙亚芳绝对算得上一个。2009年,华为成功超越阿尔卡特朗讯,诺基亚西门子,仅次于爱立信,成为全球第2大通信设备制造商。1987年成立
2000块预算,这4款手机最吃香,内行人最爱2021年,如果我们只有两千块预算的话,还能买到好用的手机吗?这确实是个问题,不少人觉得现在的手机越来越贵了,五六千的安卓手机都成寻常了,那两千块怎么够买一款好手机呢?这话倒也未必
美银预计今年全球芯片销售额飙升24将达到5440亿美元美国银行上调了其对今年全球芯片销售额的预期,预计电脑和汽车用芯片的需求将不断增长,并将英伟达和汽车芯片供应商ONSemiconductor列入其今年剩余时间的的首选股票清单。全球芯
高倍变焦iPhone的痛点!三星专利把控到底有多强?现如今,几乎所有的高端智能手机都具备高倍变焦这个功能,但唯独iPhone在这块一直没有什么起色!虽说iPhone在拍照视频的色彩把控方面一直都做得不错,但是我们要客观承认的是,高倍
为什么一些人会黑三星手机?很多人黑三星手机是正常的,因为他们不会用三星手机。其实三星手机的质数是非常高的,从屏幕到解码芯片等等,都是自已的产品。但是,很多的三星手机用户不知道,当自己买了三星手机后,为了用起
为什么有人买X70Pro也不愿意买华为Mate40Pro?萝卜青菜,各有所爱。就像有人愿意买现代,也不愿意买奔驰,很正常,没什么大惊小怪加价买了华为Mate40pro,我愿意,怎么了?我真的感觉vivo手机挺好用的!从x21换了x50,x
华为手机怎么投屏到电视机上?于使用华为手机的用户来说,多屏互动这个词可能并不陌生。因为如果你的手机支持此功能的话,当你下拉状态栏打开快捷功能开关界面,通常就能看到它(如果没有显示,可以尝试选择编辑快捷开关查找
通道越多的助听器价格一定是越贵吗?是的,同一系列的助听器,通道越多,价格越贵。一般来说同品牌的通道越多就越贵,但是每个品牌对通道的处理不一样,所以助听器的价钱不能仅仅用通道的多少来衡量,具体效果以试听感受为标准通道
支付宝被查!你的钱还安全吗?支付宝是阿里巴巴旗下的一个常用的支付手段,日常的生活能用的到的地方都可以使用。这次支付宝被查只是他的合规性问题的调查,对于我们存在支付宝的资金安全还是有保证的。而且这次被查从长远来
为什么苹果13,依旧有那么强大的市场号召力?优秀是对比出来的,看看苹果的友商们,目前是什么情况。三星有人说三星的衰落是从三星爆炸7开始的,处理态度上,国内国外两副嘴脸,以至于大家抛弃了三星。三星note7是2016年发生的,
GalaxyA73定位中端,1。08亿像素摄像头或将是亮点现在手机厂商越来越重视手机的影像实力了,尤其是三星的摄像实力一直走在了前列。自从GalaxyS20Ultra上推出了1。08亿像素的摄像头后,就引发了不少热议。最近有消息爆料称三星