1. 程式人生 > >使用 Python 生成類數字字母混合驗證碼圖片

使用 Python 生成類數字字母混合驗證碼圖片

分析

  • 首先是要生成含有數字字母的字串
  • 然後建立畫布,並且隨機填充畫布的顏色
  • 最後將字元畫上去,為了保證畫上去的字元不同色,需將這些字元儲存為一個列表通過多次畫上去,期間要隨機設定顏色值

在這裡我們通過使用PIL模組來操作影象,random模組進行隨機生成

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random
import string

#混合字串,可自定義
basic_string = '0123456789'+string.letters+'9876543210'
def randColor():  #產生隨機顏色
return (random.randint(64,255),random.randint(64,255),random.randint(64,255)) def randChar(): #產生隨機數字字母組合列表 return random.sample(basic_string,4)#chr(random.randint(65,90)) def pictureDraw(): height=60 width=240 image=Image.new('RGB',(width,height),(255,255,255)) #白色畫布 font=ImageFont.truetype("C:/windows/fonts/Arial.ttf"
,36) #畫筆字型 draw=ImageDraw.Draw(image) #繪畫物件 for i in range(width): for j in range(height): draw.point((i,j),fill=randColor()) #隨機逐畫素填充顏色 for i in range(4): draw.text((60*i+10,19),randChar()[i],font=font,fill=(random.randint(30,120),random.randint(30,120
),random.randint(30,120))) #文字繪畫 image=image.filter(ImageFilter.BLUR) #產生模糊感 image.save('CAPTCHA.jpg','jpeg') image.show() if __name__=='__main__': pictureDraw()

執行結果如下:
這裡寫圖片描述