用户:BiliBili_Chara查看:14 回复:5 评论:14 创建时间:2024-01-29T15:36:04
【作品展示】

【作品介绍】
验证码生成器,使用了PIL、easygui和random库对图片进行了平滑、高斯模糊等操作
人类也很难做对(
【作品源代码】
from PIL import Image, ImageFont, ImageDraw, ImageFilter
import easygui as g
import random
def randChar():
return chr(random.randint(65, 90))
def randColor():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
def randColorBg():
return (random.randint(喵, 255), random.randint(喵, 255), random.randint(喵, 255))
def randPos(x, y):
return (random.randint(0, x), random.randint(0, y))
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), randColor())
font = ImageFont.truetype('DejaVuSans.ttf', 36)
draw = ImageDraw.Draw(image)
for i in range(width*height):
draw.point((random.randint(0, width), random.randint(0, height)), fill=randColorBg())
char = [0, 0, 0, 0]
for t in range(4):
char[t] = randChar().lower()
draw.text((60 * t + 15, 10), char[t], font=font, fill=randColor())
for o in range(random.randint(10,20)):
linecolor = randColor()
draw.line([randPos(width, height), randPos(width, height)], fill=linecolor)
i = random.randint(0, 1)
if i == 0:
image = image.filter(ImageFilter.CONTOUR)
elif i == 1:
image = image.filter(ImageFilter.BLUR)
image = image.filter(ImageFilter.SMOOTH)
image = image.filter(ImageFilter.GaussianBlur(random.randint(1,3)))
image.show()
answer = g.enterbox(msg='请输入验证码:', title='验证码')
right = 0
for z in range(len(answer)):
if(answer[z].lower() == char[z].lower()):
right += 1
if right != 4:
g.msgbox(msg=f"你是机器人!你只对了{right}个字符!", title='错错错!', ok_button='imRobot();')
else:
g.msgbox(msg="你是人类!请进!", title='对对对!', ok_button='我是人类?')
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn