python生成隨機圖形驗證碼

使用python生成隨機圖形驗證碼,須要使用pillow模塊python

  1. 安裝pillow模塊

pip install pillow
複製代碼
  1. pillow模塊的基本使用

from PIL import Image,ImageDraw,ImageFont
#使用Image類來實例化一個長爲400px,寬爲400px,基於RGB的(255,255,255)顏色的圖片
img = Image.new(mode="RGB",size=(400,400),color=(255,255,255))
#建立畫筆,用於生成圖片生的內容
draw = ImageDraw.Draw(img,mode="RGB")
draw.point([80,80],fill=(0,0,0))
#在(100,100)座標上生成一個紅點,指定的座標不能超過圖片的尺寸
draw.point([300,250],fill="red")
draw.line((100,100,100,300),fill="red")
draw.line((100,200,200,100),fill="blue")

#不是生成的圖片保存爲png格式
with open("pic.png","wb")as f:
    img1.save(f,format="png")

#顯示圖片
img.show()
複製代碼
建立畫筆
draw = ImageDraw.Drwa(img,mode="mode")
複製代碼
在圖片上生成點
#在(100,100)座標生生成一個紅點
#注:定義的點的座標不能超過圖片尺寸
draw.point([100,100],fill="red")
複製代碼
在圖片生畫直線
#第一個括號裏面的參數是座標,前兩個數爲開始座標,後兩個數爲結束座標
#括號裏的第二個參數指定顏色,能夠直接指定,也能夠用RGB來表示顏色
draw.line((100,100,100,300),fill="red")
draw1.line((100,200,200,100),fill="black")
複製代碼

IBagJ.png

在圖片生畫一個圓
#括號裏的第一個參數是座標,前兩個是起始座標,後倆個是結束座標
#大括號裏的第二個參數是開始角度,第三個是結束角度0到360
drwa.arc((100,100,300,300),0,360,fill="red")
drwa.arc((0,0,300,300),0,90,fill="blue")
複製代碼

IBCa6.png

在圖片上寫文本
#第一個參數爲座標,第二個參數爲全部生成的文本的內容
#第三個參數爲文本的顏色
draw.text([0,0],"python","blue")
複製代碼

IBUJK.png

在圖片上指定的字體生成文本
#實例化一個字體對象,第一個參數字體的路徑第二個參數字體大小
font1 = ImageFont.truetype("UKIJtuz.ttf",29)
draw.text([200,200],"linux","red",font=font1)
複製代碼

IBkQa.png

圖片驗證碼的實現
import random

# 導入Image,ImageDraw,ImageFont模塊
from PIL import Image, ImageDraw, ImageFont

# 定義使用Image類實例化一個長爲120px,寬爲30px,基於RGB的(255,255,255)顏色的圖片
img1 = Image.new(mode="RGB", size=(120, 30), color=(255, 255, 255))

# 實例化一支畫筆
draw1 = ImageDraw.Draw(img1, mode="RGB")

# 定義要使用的字體
font1 = ImageFont.truetype("UKIJTuz.ttf", 28)

for i in range(5):
   # 每循環一次,從a到z中隨機生成一個字母或數字
   # 65到90爲字母的ASCII碼,使用chr把生成的ASCII碼轉換成字符
   # str把生成的數字轉換成字符串
   char1 = random.choice([chr(random.randint(65, 90)), str(random.randint(0, 9))])

   # 每循環一次從新生成隨機顏色
   color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

   
   # 圖片長度爲120px,要生成5個數字或字母則每添加一個,其位置就要向後移動24px
   draw1.text([i * 24, 0], char1, color1, font=font1)

# 把生成的圖片保存爲"pic.png"格式
with open("picb.png", "wb") as f:
   img1.save(f, format="png")
複製代碼

IBwce.png

每次運行,程序在程序的同級目錄會生成一個包含隨機字符的小圖片.linux

相關文章
相關標籤/搜索