python生成验证码脚本
最近每天都用python写一个小的脚本,练习使用python语法。
验证码的生成:
这里使用了python的图像处理库PIL,安装PIL的过程中出了一个小麻烦,就使用Pillow-win32的一个文件,具体的我也忘了,可以百度下。
直接看代码:
# -*- coding:utf-8 -*- from PIL import Image,ImageFont,ImageDraw,ImageFilter
import random #返回随机字母
def charRandom():
return chr((random.randint(65,90))) #返回随机数字
def numRandom():
return random.randint(0,9) #随机颜色
def colorRandom1():
return (random.randint(64,255),random.randint(64,255),random.randint(64,255)) #随机长生颜色2
def colorRandom2():
return (random.randint(32,127),random.randint(32,127),random.randint(32,127)) width = 60 * 4
height = 60
image = Image.new('RGB', (width,height), (255,255,255));
#创建font对象
font = ImageFont.truetype('Arial.ttf',36); #创建draw对象
draw = ImageDraw.Draw(image)
#填充每一个颜色
for x in range(width):
for y in range(height):
draw.point((x,y), fill=colorRandom1()) #输出文字
for t in range(4):
draw.text((60*t+10,10), charRandom(),font=font, fill=colorRandom2()) #模糊
image = image.filter(ImageFilter.BLUR)
image.save('./image/code.jpg','jpeg')
PIL对于图像的处理还是可以的:
这里是官方的文档:http://effbot.org/imagingbook/ 讲的很详细
Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。可以对图形进行简单的操作例如旋转、裁剪、缩小放大,滤波等等。
ImageFont模块是字体模块,可以对字体进行设置
上面程序的思想:
1、定义了几个随机获取颜色和数字字母的函数,获得验证码的文字
2、Image.new生成一个黑色的画布,也就是图片,大小60*240
3、ImageFont定义图片上将使用的字体
4、对该图片生成一个draw对象,通过该draw对象,改变图像的像素,使用随见长生的颜色
5、在图片上产生文字,文字也使用随机的颜色
6、对图片进行模糊化处理
7、将图片保存
最后就可以在image文件下得到code.jpg 的图片

扩展:
可以的话,还可以通过draw对象在图片上随机产生几根线条,将验证码变得更难看懂,可以将文字倾斜等等。
image.rotate(random.randint(0,30),expand=0) def randomLine(self, num):
draw = ImageDraw.Draw(self.image)
for i in range(0,num):
draw.line([self.randomPoint(),self.randomPoint()], self.randomRGB())
del draw
关于验证码还有很多可以值得看的,之前在用opencv的时候,就想着做一个验证码识别的程序,从而可以实现自动登入系统,不需要每次都手工输入验证码,这好像也是图灵研究的一部分,也是人和机器的区分标志,全自动区分计算机和人类的图灵测试(英语:Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),俗称验证码。具体的可以百度了解。
python生成验证码脚本的更多相关文章
- python 生成验证码
在工作中经常遇到一些验证码,这些是怎么生成的呢,今天我用Python编写了下 import randomcode = []for i in range(6): if i == random.randi ...
- python生成验证码,文字转换为图片-乾颐堂
在58或者赶集等一些网站上经常看到手机号是图片格式,或者一些网站的验证码.这些都是动态生成的,今天我们来看一下如何用python把文字生成图片.其实今天主要借助pygame的图像渲染模块,这样比较简单 ...
- Python生成验证码
#!/usr/bin/env python #coding:utf8 import random #方法1: str_code='zxcvbnmasdfghjklqwertyuiopZXCVBNMAS ...
- Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed
最近在用Python开发自己的博客,需要用到Python生成验证码,当然肯定要用到Python的图形处理库PIL,因为我用的是windows. 所以在安装好pil之后就开始写,就按照题目所说出现了Th ...
- Python随机生成验证码的两种方法
Python随机生成验证码的方法有很多,今天给大家列举两种,大家也可以在这个基础上进行改造,设计出适合自己的验证码方法方法一:利用range Python随机生成验证码的方法有很多,今天给大家列举两种 ...
- python生成随机图形验证码
使用python生成随机图片验证码,需要使用pillow模块 1.安装pillow模块 pip install pillow 2.pillow模块的基本使用 1.创建图片 from PIL impor ...
- Python 生成随机验证码
Python生成随机验证码 Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...
- Python生成随机验证码
Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...
- pig脚本不需要后缀名(python tempfile模块生成pig脚本临时文件,执行)
pig 脚本运行不需要后缀名 pig脚本名为tempfile,无后缀名 用pig -f tempfile 可直接运行 另外,pig tempfile也可以直接运行 这样就可以用python临时文件存储 ...
随机推荐
- jquery冒泡及阻止
javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结. 事件冒泡是一个从子节点向祖先节点冒泡的过程: 事件捕获刚好相反,是从祖先节点到子节点 ...
- [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)
五.准备HA环境1.准备yum源a.安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源.[root@s1 ~]# mount 可以看到cdrom已经挂载了,首先安装vsftp服务[ro ...
- Java反射在JVM的实现
1. 什么是Java反射,有什么用?反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段.这使反射成为构建灵活应用 ...
- .net 自然排序方式
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- 【转】HTTP-only Cookie 脚本获取JSESSIONID的方法
彻底避免xss攻击的方法. 别人可以通过注入js脚本获取你的session cookie,如果幸运的话还可以获取通过js遍历你的dom树获取你的用户的用户名和密码. 如果只是通过正则表达式验证输入的话 ...
- Ubuntu 查看文件以及磁盘空间大小命令df
(1)查看文件大小 查看当前文件夹下所有文件大小(包括子文件夹) du -sh # du -h 15M ./package 16K ./.fontconfig 4.0K ...
- js遍历集合
首先,描述一下问题.由于需要后台取出数据,遍历展示在table中,大体如下: 后台取出的是 Map<String , List<Object>>,下面是我写得比较朴素一点的写法 ...
- 使用Forms进行身份验证(Asp.net)
1.背景 以往项目登陆后的用户信息都是存放在session中,但session有一个问题就是读取的时候需要先实例化所在类,在调用对象()如果用static修饰,则可能到时多次登陆sessio ...
- git撤销删除
问题描述: 使用git时本地文件删除了,提交至github,希望撤销修改,找回源文件 问题解决: (1)查看git log,查看日志信息 注: 使用 git log 可以查看提交的日志 ...
- [转载]c# OpenFileDialog
string resultFile = ""; OpenFileDialog openFileDialog1 = new OpenFileDialog(); ...