下面是一個實戰項目的結果。 
 代碼如下:
#coding: utf-8 
import Image,ImageDraw,ImageFont,os,string,random,ImageFilter 
def initChars(): 
""" 
允許的字符集合,初始集合為數字、大小寫字母 
usage: initChars() 
param: None 
return: list 
返回允許的字符集和 
for: picChecker類初始字符集合 
todo: Nothing 
""" 
nums = [str(i) for i in range(10)] 
letterCase = [ 
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 
'w', 'x', 'y', 'z' 
] 
upperCase = [ 
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 
'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 
'W', 'X', 'Y', 'Z', 
] 
return(nums+letterCase+upperCase) 
class picChecker(): 
""" 
圖片驗證代碼: 
1) 用戶注冊需填寫圖片驗證碼,以阻止機器人注冊 
2) 圖片驗證碼字符數為 4 位(大小寫字母與數字,不區分大小寫)。 
用戶如果沒有填寫驗證碼或沒有填寫正確的驗證碼, 
頁面友好性提示用戶填寫(同時程序方面也做相應限制) 
usage: pc = picChecker().createChecker() 
param: 很多,如下 
chars 允許的字符集合, 
類型 list 
默認值 initChars() 
例子 ['1','2','3'] 
length 字符串長度 
類型 integer 
默認值 4 
size 圖片大小 
類型 tutle 
默認值 (120,30) 
例子 (120,30) 
fontsize 字體大小 
類型 integer 
默認值 25 
begin 字符其實位置,即左上角位置 
類型 tutle 
默認值 (5,-2) 
outputType 輸出類型 
類型 string 
默認值 GIF 
可選值 GIF JPEG TIFF PNG 
mode 圖片模式 
類型 string 
可選值 RGB L (還有其他模式,但只推薦這2種) 
默認值 RGB 
backgroundColor 背景色 
foregroundColor 前景色 
當mode=RGB時,backgroundColor,foregroundColor為tutle類型 
取值為(integer,integer,integer) 
表示RGB顏色值 
當mode=L時,backgroundColor,foregroundColor為數字,表示黑白模式 
取值為0-255 
表示灰度 
fonttype 字體路徑 
類型 string 
默認值 "simsum.ttc" 
jamNum 干擾線條數 
類型 (int1,int1) 
int1 干擾線條數下限,包含 
int2 干擾線條數上線,包含 
pointBorder 散點噪音 
構造方法:對每個像素點使用隨機函數確定是否在該像素上畫散點噪音 
類型 (int1,int2) 
int1越大 散點越多 
int2越大 散點越少 
return: [picCheckerStr,pic] 
picCheckerStr: 表示返回圖片中對應的字符串,可用于session驗證以及其他用途 
pic : 返回的圖片,類型為Image 
for : 
todo : Nothing 
""" 
#默認字體路徑 
#DEFAULT_FONT_PATH = os.path.join(os.path.dirname(__file__),'simsun.ttc').replace('//','/') 
def __init__(self,chars = initChars(),size = (120,30),fontsize = 25, 
begin = (5,-2),outputType = 'GIF',mode = 'RGB' , 
backgroundColor = (255,255,255), foregroundColor = (0,0,255),