標籤:python pil 驗證碼
第 0010 題:使用 Python 產生類似於中的字母驗證碼圖片
思路:先隨機產生驗證碼,然後用Python的PIL庫畫出這個啟用碼的圖片,具體點就是建立畫布,加驗證碼的字上去,增加噪點進行幹擾,再進行模糊處理,接著儲存到名字為驗證碼的圖片中。
0010.產生驗證碼圖片.py
#!/usr/bin/env python#coding: utf-8import Image, ImageDraw, ImageFont, ImageFilterimport string, randomfontPath = "/usr/share/fonts/truetype/ttf-devanagari-fonts/"# 獲得隨機四個字母def getRandomChar(): return [random.choice(string.letters) for _ in range(4)]# 獲得顏色def getRandomColor(): return (random.randint(30, 100), random.randint(30, 100), random.randint(30, 100))# 獲得驗證碼圖片def getCodePiture(): width = 240 height = 60 # 建立畫布 image = Image.new(‘RGB‘, (width, height), (180,180,180)) font = ImageFont.truetype(fontPath + ‘kalimati.ttf‘, 40) draw = ImageDraw.Draw(image) # 建立驗證碼對象 code = getRandomChar() # 把驗證碼放到畫布上 for t in range(4): draw.text((60 * t + 10, 0), code[t], font=font, fill=getRandomColor()) # 填充噪點 for _ in range(random.randint(1500,3000)): draw.point((random.randint(0,width), random.randint(0,height)), fill=getRandomColor()) # 模糊處理 image = image.filter(ImageFilter.BLUR) # 儲存名字為驗證碼的圖片 image.save("".join(code) + ‘.jpg‘, ‘jpeg‘);if __name__ == ‘__main__‘: getCodePiture()
選了兩張隨機產生的驗證碼圖片:
Python Show-Me-the-Code 第 0010 題 產生驗證碼圖片