【python小练】0010
第 0010 题:使用 Python 生成类似于下图中的字母验证码图片
思路:
1. 随机生成字符串
2. 创建画布往上头写字符串
3. 干扰画面
code:
# codeing: utf-8 from PIL import Image, ImageDraw, ImageFont, ImageFilter
import string
import random def get4char():
return [random.choice(string.ascii_letters) for _ in range(4)] # 可以把‘_’换做任意字母,‘_’说明后续不用 def getcolor():
return random.randint(30, 100), random.randint(30, 100), random.randint(30, 100) def getpicture():
width = 240
height = 60 image = Image.new('RGB', (width, height), (180, 180, 180))
font = ImageFont.truetype('arial.ttf', 40) draw = ImageDraw.Draw(image)
code = get4char()
for ch in range(4):
draw.text((60 * ch,30), code[ch], font=font, fill=getcolor()) for _ in range(random.randint(1500, 3000)):
draw.point((random.randint(0, width), random.randint(0, height)), fill=getcolor()) image = image.filter(ImageFilter.BLUR)
image.save("".join(code) + '.jpg') getpicture()
Notes:
1. string.ascii_letters,大小写英文字母集合字符串
2. random.choice():Return a random element from the non-empty sequence seq. If seq is empty, raises IndexError.
3. random.randint():Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
4. image.new('RGB', (w,h), (r,g,b))
result:



我觉得自己应该去把tutorial从头到尾先看一遍= - =
下一篇写怎么识别验证码咯。
【python小练】0010的更多相关文章
- 【python小练】0013
第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-) 科科...妹子就算了,大晚上的爬点吃的吧.食物图集:抿一口,舔一舔,扭一扭~·SCD 写个简单的爬图爬虫 ...
- 【python小练】0014题 和 0015 题
第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { ":["张三",150,120,100], ":[& ...
- 【python小练】0005
第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小. 首先,iphone5的分辨率是1136x640. if条件句判断横(纵)向是否大于对应的ipho ...
- 【python小练】0004
第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数. 先回忆一下各种括号的用途: () tuple [] list {} dict ([]) set——需要一个list作为输入合集 c ...
- 【python小练】0002
第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中. . . .(一脸懵逼) Python访问数据库:(廖雪峰python教程) 1. SQLi ...
- 【python小练】0001
第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? # coding ...
- python小练--使用正则表达式将json解析成dict
练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...
- python 小练手
监控 主动监控 - 服务器端轮询客户端 被动监控-客户端agent上报到服务器端 混合模式---两种都支持 需求 1个性化的监控需求 2每个服务的监控间隔不同 3混合模式的监控
- 【python小练】0020
第 0020 题: 登陆中国联通网上营业厅 后选择「自助服务」 --> 「详单查询」,然后选择你要查询的时间段,点击「查询」按钮,查询结果页面的最下方,点击「导出」,就会生成类似于 2014年1 ...
随机推荐
- POJ-3436 ACM Computer Factory(网络流EK)
As you know, all the computers used for ACM contests must be identical, so the participants compete ...
- ONI无法启动: Uh oh! Unable to launch Neovim...
问题描述 在终端中是可以打开nvim的,ONI无法正确找到位置 解决方法 修改配置文件,指定nvim的路径 终端中输入which nvim定位所在位置,这里返回的结果是/usr/local/bin/n ...
- js小结
1,浏览器对json支持的方法: JSON.parse(jsonstr);将string转为json的对象. JSON.stringify(jsonobj);将json对象转为string. 2,js ...
- sprintf() 处理 float类型的数字,保留小数位等。
关于 sprintf()的百科地址: http://baike.baidu.com/view/1295144.htm sprintf(szText, "%[填空字元][宽度][.精度]f&q ...
- 在vue中使用import()来代替require.ensure()实现代码打包分离
最近看到一种router的写法 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const login = ...
- canvas的api小结
HTML <canvas id="canvas"></canvas> Javascript var canvas=document.getElementBy ...
- Java IO流篇
什么是IO流 思考问题 如何读写文件? 解决--通过流读写文件 流是指一连串流动的字符,以先进先出传输信息的通道. Java操控硬盘上的文件,通过IO流来实现 Java流的分类 按流向区分 ---输出 ...
- pycharm 出现 "PEP:8 expected 2 blank lines ,found 0"
https://blog.csdn.net/modangtian/article/details/79687623 这句话的意思是“有两个空白行,但是没有发现.” 在声明函数的那一行的上方必须有两行的 ...
- JavaScript frame跨域获取元素、修改元素属性、调用其他frame页面方法
今天做了一个frameset的集合页面,其中有多个iframe页面,其中点击frame=leftMenu里的按钮元素后,需要修改frame=Header页面里的一个div元素属性. 1.主页面架构 & ...
- jdk1.8的新特性:很全面
JDK1.8: https://www.cnblogs.com/tiantianbyconan/p/3613506.html stream的几个方法: filter: 过滤条件 过滤为空的方法: 刚好 ...