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临时文件存储 ...
随机推荐
- 非常有用!eclipse与myeclipse恢复已删除的文件和代码
eclipse与myeclipse恢复已删除的文件和代码 今天写了1300多行代码,被不小心删除了顿时感觉手足无措,后来用myeclipse的历史文件恢复功能,找回来了,虚惊一场!!!MyEclip ...
- makefile教程网址
http://www.cnblogs.com/wang_yb/p/3990952.html
- tcp-client-c++
#include "stdafx.h" #include <Winsock2.h> #include <iostream> #pragma comment( ...
- iOS 下拉菜单 FFDropDownMenu自定义下拉菜单样式实战-b
Demo地址:https://github.com/chenfanfang/CollectionsOfExampleFFDropDownMenu框架地址:https://github.com/chen ...
- 2109&2535: [Noi2010]Plane 航空管制 - BZOJ
Description世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上, ...
- 2815: [ZJOI2012]灾难 - BZOJ
题目描述 Description 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的 ...
- [转载]C# 多线程、控制线程数提高循环输出效率
C#多线程及控制线程数量,对for循环输出效率. 虽然输出不规律,但是效率明显提高. 思路: 如果要删除1000条数据,只使用for循环,则一个接着一个输出.所以,把1000条数据分成seed段,每段 ...
- jquery层居中,点击小图查看大图,弹出层居中代码,顶部层固定不动,滚动条滚动情况
jquery层居中,点击小图查看大图,弹出层居中代码 http://www.cnblogs.com/simpledev/p/3566280.html 见第一版,发现一个情况,如果页面内容多出一屏的情况 ...
- 配置sql server2012属性 ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_5techref/html/6df812ad-4d80-4503-8a23-47719ce85624.htm
服务与服务器是两个不同的概念,服务器是提供服务的计算机,配置服务器主要是对内存.处理器.安全性等几个方面配置.由于SQL Server 2005服务器的设置参数比较多,这里选一些比较常用的介绍. 配置 ...
- SDUT2087离散事件模拟-银行管理
呃,这个题,我只想仰天长啸:无语死我了,还动用了繁和帅锅给我改,妹的,做题一定要仔细仔细再仔细啊,这种小错误都犯真是该打. 题目描述 现在银行已经很普遍,每个人总会去银行办理业务,一个好的银行是要考虑 ...