python 驗證碼

#coding=utf-8

import random #隨機模塊,可以生成隨機數
from PIL import Image,ImageDraw,ImageFont,ImageFilter

#Image 負責處理圖片
#ImageDraw 負責處理畫筆
#Imagefont 負責處理字體
#ImageFilter 負責處理濾鏡

#項目思路:
   #1、定義一張圖片
img=Image.new("RGB",(150,50),(255,255,255))
"""
 第一個參數:代表我們採用的RGB顏色模式
 第二個參數:代表圖片大小
 第三個參數:具體的圖片顏色
"""
   #2、創建畫筆
draw =ImageDraw.Draw(img)
   #3、繪製線條和點
       #繪製線
for i in range(random.randint(1,10)):
    draw.line(
         #在匯制線條時有個特色:每條線有兩個點,每個點靠x,y兩個值來確定位置
         [
            (random.randint(1,150),random.randint(1,150)),
            (random.randint(1,150),random.randint(1,150))
         ],
         fill=(0,0,0)
    )       
       #繪製點
for i in range(1000):
    draw.point(
               [
                  random.randint(1,150),
                  random.randint(1,150)
               ],
               fill=(0,0,0)
      )
   #4、繪製我們的文字
      #我們的文字是隨機產生的
      #我們的文字個數是一定的
         #定義我們要生成隨機數的字母和數字
font_list = list("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
c_chars = "".join(random.sample(font_list,7))
#random.sample是在制定的列表當中隨機的取出指定個元素
      #繪製字體
          #我們需要先定製一下字體
font = ImageFont.truetype("simsun.ttc",32)
draw.text((5,5),c_chars,font=font,fill="green")
"""
第一個參數:代表文字的位置,距離上和左的距離
第二個參數:代表文字的內容
第三個參數:代表字體
第四個參數:字體顏色
"""         
   #5、定義扭曲的參數
params=[1-float(random.randint(1,2))/100,
       0,
       0,
       0,
       1-float(random.randint(1,2))/100,
       float(random.randint(1,2))/500,
       0.001,
       float(random.randint(1,1))/500,
      ]   
   #6、使用濾鏡
    #添加濾鏡
img=img.transform((150,50),Image.PERSPECTIVE,params)
"""
第一個參數:扭曲的範圍
第二個參數:扭曲的樣式
第三個參數:扭曲的參數

"""   

          #進行扭曲

img=img.filter(ImageFilter.EDGE_ENHANCE_MORE)       
img.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章