最近每天都用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生成验证码脚本的更多相关文章

  1. python 生成验证码

    在工作中经常遇到一些验证码,这些是怎么生成的呢,今天我用Python编写了下 import randomcode = []for i in range(6): if i == random.randi ...

  2. python生成验证码,文字转换为图片-乾颐堂

    在58或者赶集等一些网站上经常看到手机号是图片格式,或者一些网站的验证码.这些都是动态生成的,今天我们来看一下如何用python把文字生成图片.其实今天主要借助pygame的图像渲染模块,这样比较简单 ...

  3. Python生成验证码

    #!/usr/bin/env python #coding:utf8 import random #方法1: str_code='zxcvbnmasdfghjklqwertyuiopZXCVBNMAS ...

  4. Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed

    最近在用Python开发自己的博客,需要用到Python生成验证码,当然肯定要用到Python的图形处理库PIL,因为我用的是windows. 所以在安装好pil之后就开始写,就按照题目所说出现了Th ...

  5. Python随机生成验证码的两种方法

    Python随机生成验证码的方法有很多,今天给大家列举两种,大家也可以在这个基础上进行改造,设计出适合自己的验证码方法方法一:利用range Python随机生成验证码的方法有很多,今天给大家列举两种 ...

  6. python生成随机图形验证码

    使用python生成随机图片验证码,需要使用pillow模块 1.安装pillow模块 pip install pillow 2.pillow模块的基本使用 1.创建图片 from PIL impor ...

  7. Python 生成随机验证码

    Python生成随机验证码  Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...

  8. Python生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...

  9. pig脚本不需要后缀名(python tempfile模块生成pig脚本临时文件,执行)

    pig 脚本运行不需要后缀名 pig脚本名为tempfile,无后缀名 用pig -f tempfile 可直接运行 另外,pig tempfile也可以直接运行 这样就可以用python临时文件存储 ...

随机推荐

  1. git,repo学习

    Repo:就是一组git命令的集合,repo init 下载一个分支. repo start 文件名 --all本地传建的另一个代码分支,用于备份作用. 比如:repo start zhao --al ...

  2. Mysql ubuntu下的安装卸载

    删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-ge ...

  3. 执行umount 命令的时候出现 device is busy

    执行umount 命令的时候出现 device is busy ,有人在使用这块磁盘 umount /dev/sde1 umount: /u01/app/oracle: device is busy ...

  4. tomcat绑定域名

    现在很多的公司的网站都是用tomcat作为应用服务区的,可是对于初学者,8080端口号是如何去掉的,这些网站是如何和域名绑定到一起的呢?一个tomcat是如何绑定多域名?并且这些域名是如何对应不同的项 ...

  5. AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(一)

    随着IOS7由之前UI的拟物化设计变为如今的扁平化设计,也许扁平化的时代要来了,当然我们是不是该吐槽一下,苹果什么时候也开始跟风了,自GOOGLE和微软界面扁平化过后,苹果也加入了这一队伍. Aval ...

  6. ADO.NET- 基础总结及实例介绍

    最近闲暇时间写的一些小程序中,访问数据库比较多:下面主要介绍下ADO.NET方面知识,有不足之处,希望大神们不吝赐教: 提到ADO.NET,经常会和ASP.NET进行混淆,两者的区别很大,没有可比性, ...

  7. 在ASP.NET MVC应用程序中实现Server.Transfer()类似的功能

    在ASP.NET MVC应用程序中,如果使用Server.Transfer()方法希望将请求转发到其它路径或者Http处理程序进行处理,都会引发“为xxx执行子请求时出错”的HttpException ...

  8. .NET 轻松实现HTML的绝对过滤之SafeHelper

    当今网页中经常使用到网页编辑器,因为人们需要在网页中插入图片,视频,样式等html代码内容,这使得网页的信息更加丰富.随之而来的,也给程序开发者带来了不少麻烦,因为提交的html中难免会出现不安全标记 ...

  9. cookieContainer应用

    PublicSharedFunctionGetCookiesSetByPage(ByVal strUrl AsString,ByVal cookieToProvide AsString)AsIEnum ...

  10. [设计模式] 7 适配器模式 adapter

    在 Adapter 模式的结构图中可以看到,类模式的 Adapter 采用继承的方式复用 Adaptee的接口,而在对象模式的 Adapter 中我们则采用组合的方式实现 Adaptee 的复用 类模 ...