搜索
查看: 2829|回复: 0

[Python] 用python制作抽奖券,附全部代码

[复制链接]

33

主题

46

帖子

230

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
230
发表于 2017-2-1 17:37:17 | 显示全部楼层 |阅读模式
                                                                                                
注:本文是生信媛微信公众号原创文章
作者:天地本无心
原文链接:
http://mp.weixin.qq.com/s/4AmFer3km-3R1w1CvUPB-w

任何一个生信岗位的招聘要求,恐怕都有一条: 需要熟练掌握python/perl/R或者其它编程语言中的一种或几种。所以学会一门编程语言是生信进阶的刚需。(这里说的“学会”的最低要求就是掌握如何处理文本),但是python作为一门这么可爱的语言,如果仅仅处理文本,那就真是大材小用了。最好的学习方式,就是用python来解决生活中的实际问题。寓学于乐。

昨天晚上正在干活,一个师妹过来问我一个问题。说想给今天举办的研究所元旦联欢会制作抽奖券,师妹本来准备在word里面,生成1-400个数字,并且调到合适大小之后,将二维码粘贴在数字的右边。结果发现要一个一个地调大小,再贴二维码。而今天就是研究所元旦晚会,如果手工去做,时间肯定来不及,并且效果也不好看,问我有没有什么好的办法。正好程序提交的间隙,有大概两个小时的时间让自己去干点别的。

说干就干。不过先要明确目的。
一张抽奖券的自我修养是:左边有显眼的数字,右边有活动的二维码。并且如果能够添加上赞助公司的信息,想必也是极好的。

稍微一思考,就想到了python里面的PIL包。还记得上次的生信媛全家福吗,其中也是用了PIL。
不到一会就实现了目的,效果如下。

chou1.jpg

首先基本原理就是对基本数字的使用,下载0, 1, 2, ..., 9数字代表的图片。然后比如说当面对183这样的数字的时候,就可以把183拆开成1, 8, 3. 然后将这些数字对应的图片依次粘贴到一起,最后添加上二维码。再说通俗一点,就是先用PIL准备一块合适大小的画布,然后将图片依次画上去。

首先我们需要去搜集素材。
网址:  www.xqxtp.com/beijing/45594.html
找到了我们需要的素材。当然这时候我们可以用python里的request库,或者urllib2库来爬取整个图片,但是因为我们的素材仅仅限于0到9,直接保存得了。也就不到一分钟的事儿。写代码是为了方便,但是有更方便的方法,那还写什么代码啊。

写好之后,放入一个文件夹。命名随意,但最好整齐保持一致,方便使用。

chou2.jpg


我们可以看到单个数字的左右两边都比较宽,如果变成两位数拼接在一起,或者变成三位数拼接在一起,数字之间的空隙比较大,影响美观。所以,我们先要截取数字图片,进行一些预处理。用QQ热键ctrl+Alt+A吗? 当然不是,用的是PIL库里的函数。先上代码。


chou3.jpg

通过这几行代码,就可以将照片根据到底是二位数还是三位数,裁剪成合适的大小。

这一部分的代码运行完之后,就会自动在当前目录下生成两个文件夹。

chou4.jpg
chou5.jpg

我们可以看到数字的大小有所变化。

让我们再来说说二维码吧,如果直接放二维码,二维码占据空间太大,感觉没多大必要,师妹说了,如果能添加赞助公司的信息就好了。

如何编辑二维码呢,如果你熟悉AI/PS,那自然非常方便,如果不熟悉,也没关系,PPT就挺好用的。总之,编辑之后的效果就是这样的。


chou6.jpg

接着上代码:

chou7.jpg

上面的一段代码的目的就是我们最关键的步骤了。比如说对于两位数,从10循环到99,  就利于91这个数字,循环读取“91”, 然后依次在画布上粘贴“9”对应的图片,然后粘贴上“1”对应的图片,然后添加上二维码, 然后接着循环处理其它的数字。

应为对于二位数字,还是三位数字,处理方式都一样,如果分开写的话,会有很多重复代码,而python的哲学就是"Do not repeat yourself". 所以写成函数,然后传递参数调用函数就行。

chou8.jpg

以上就是全部的代码,最后生成了0-399个这样的抽奖券,运行可以在30秒之内完成,前前后后不到一小时。

人生苦短,快用python。



欢迎到微信公众号订阅我们
生信媛
bio_sxy

                    
                                                                                                                                                                                                                           



上一篇:用Rodeo----python里面的rstudio,打造数据分析和可视化的利器
下一篇:用python爬取一个网站的所有生物信息学习资料,附代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-3-31 10:41 , Processed in 0.024867 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.