第 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从头到尾先看一遍= - =

下一篇写怎么识别验证码咯。

最新文章

  1. EA(企业架构)落地之道
  2. mysql下存储文件问题
  3. JRE JDK JVM是什么
  4. 长年承接AR图像识别项目,关于高速UnityARCam多图问题技术整理
  5. Json数据中的特殊字符处理
  6. Emit学习(2) - IL - 常用指令介绍
  7. NYOJ题目64鸡兔同笼
  8. Point Grey FlyCapture 实例汇总
  9. Nginx学习笔记(六) 源码分析&amp;启动过程
  10. ux.form.field.KindEditor 所见所得编辑器
  11. 关于Unity3D中Resources动态加载NGUI图片的方法
  12. ExtJs 4.2.1 复选框数据项动态加载(更新一下)
  13. hdu 5014 Number Sequence
  14. WPF窗体禁用最大化按钮
  15. webrtc之视频显示模块--video_render
  16. SVN无法修改以前提交日志的办法
  17. java web基础 --- URL重定向Filter
  18. Animation Physics and The Realization Of Animation In Browsers
  19. 阿里云部署java项目参考如下链接
  20. Spring IOC 低级容器解析

热门文章

  1. POJ-3687 Labeling Balls(拓扑)
  2. 通俗讲解MOSFET
  3. centos7安装sonarqube6.7 代码质量管理平台
  4. 蓝桥杯 错误票据 (stringstream的使用)
  5. C# DateTimePicker控件获取他的年,月,日,时,分,秒
  6. Django 跨域请求
  7. [SDOI2011]计算器(exgcd&amp;BSGS)
  8. 函数后面的const修饰符的作用
  9. gradle下载jar包
  10. 定制kickstart重建CentOS7.5镜像用于U盘引导安装