使用python生成隨機圖形驗證碼,須要使用pillow模塊python
pip install 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")
複製代碼
#括號裏的第一個參數是座標,前兩個是起始座標,後倆個是結束座標
#大括號裏的第二個參數是開始角度,第三個是結束角度0到360
drwa.arc((100,100,300,300),0,360,fill="red")
drwa.arc((0,0,300,300),0,90,fill="blue")
複製代碼
#第一個參數爲座標,第二個參數爲全部生成的文本的內容
#第三個參數爲文本的顏色
draw.text([0,0],"python","blue")
複製代碼
#實例化一個字體對象,第一個參數字體的路徑第二個參數字體大小
font1 = ImageFont.truetype("UKIJtuz.ttf",29)
draw.text([200,200],"linux","red",font=font1)
複製代碼
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")
複製代碼
每次運行,程序在程序的同級目錄會生成一個包含隨機字符的小圖片.linux