一、开发思路
1.创建画像、绘图工具
2.生成随机码、随机颜色
3.绘图工具填充整个画布
4.绘图工具写入随机码
二、思路实践
1、创建画像、绘图工具
from PIL import Image,ImageDraw
#创建240*60的画布
image=Image.new('RGB',(240,60),(255,255,255))
#创建画笔
draw=ImageDraw(image)
#画布保存
image.save('test.jpg')
2、生成随机码、随机颜色
#随机字母码
def ranchar():
return chr(random.randint(65,90))
#随机数字码
def ranint():
return str(random.randint(0,9))
choice([ranint(),ranchar()]) #随机选择字母或数字
#随机颜色RBG
def ranbgcolor():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
3、绘图工具填充整个画布
for x in range(width):
for y in range(height):
draw.point((x,y),fill=ranbgcolor())
4、绘图工具写入随机码
#创建随机4个字符
for i in range(4):
draw.text((60*i+10,10),choice([ranint(),ranchar()]))
三、代码
效果图:
废话不多说,直接上代码
# -*- coding:utf-8 -*-
#@Time :2021/2/2 15:04
#@Author :Came Deng
#@Project :practical
#@File :verify_code
#@description :生成验证码图片
import random
from PIL import Image,ImageDraw,ImageFont,ImageFilter
from random import choice
#随机字体颜色
def ranfontcolor():
return (random.randint(64,254),random.randint(50,254),random.randint(20,254))
#随机背景色
def ranbgcolor():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
#随机字母码
def ranchar():
return chr(random.randint(65,90))
#随机数字码
def ranint():
return str(random.randint(0,9))
#240*60
width=60*4
height=60
#创建画像image对象
image=Image.new('RGB',(width,height),(255,255,255))
#字体 *(根据本地实际ttf文件路径做修改)
font=ImageFont.truetype('Arial.ttf', 36)
#创建绘图工具draw对象
draw=ImageDraw.ImageDraw(image)
#创建背景点
for x in range(width):
for y in range(height):
draw.point((x,y),fill=ranbgcolor())
#创建随机4个字符
for i in range(4):
draw.text((60*i+10,10),choice([ranint(),ranchar()]),font=font,fill=ranfontcolor())
#图片模糊
image.filter(ImageFilter.BLUR)
image.save('test.jpg')