2 最簡單的驗證碼生成
阿新 • • 發佈:2019-02-20
# coding=utf-8
'''
Created on 2016年10月17日
程式作用:最基本的驗證碼,不帶任何干擾
'''
from __future__ import division
from __future__ import unicode_literals
import sys
reload(sys)
sys.setdefaultencoding('utf-8') # @UndefinedVariable
from PIL import Image,ImageFont,ImageDraw
import random
# 返回隨機字母
def charRandom():
return chr((random.randint(65,90)))
# 返回隨機數字
def numRandom():
return chr(random.randint(48,57))
# 返回隨機字母或者數字
def textRandom():
# 0-1的隨機數
if random.random()>0.7:
return numRandom()
else:
return charRandom()
# 隨機顏色
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))
def create_security_img():
width = 60 * 4
height = 60
# 建立一個全白的圖片
image = Image.new('RGB', (width,height), (255,255,255));
# 建立draw物件
draw = ImageDraw.Draw(image)
# 建立font物件 注意這裡網上大部分資料都有問題 這裡應該自己去python對應的目錄找字型檔案的路徑
font = ImageFont.truetype(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\cmr10.ttf',36);
# 輸出文字
for t in range(4):
# 起始位置 要寫的字母 字型 顏色
draw.text((60*t+10,10), textRandom(),font=font, fill=colorRandom2())
return image
if __name__ == '__main__':
img=create_security_img()
img.show()