引言
- 今天的每日一练,学习了一下用Python生成四位的图像验证码,就是我们常常在登录时见到的那种(#`O′)
思路分析
- 正如常见的那种图像验证码,它是由数字和字母的随机组合产生的,所以我们首先的第一步就是生成这样的数字字母组合
- 完成第一步后,剩下的就和之前第一次练习给图片加文字一样的操作了
具体实现
- 生成随机验证码
def genUnit():
ascii_and_num=string.ascii_uppercase+string.digits
Verification_Code=random.choices(ascii_and_num,k=4)
# 第二个参数表示取四次
return(Verification_Code)
#生成四位随机验证码
- 背景色及文字色
def back_rndColor():
return(random.randint(64,255),random.randint(64,255),random.randint(64,255))
#生成填充的随机色(用作背景色)
def code_rndColor():
return(random.randint(32,127),random.randint(32,127),random.randint(32,127))
#生成验证码的随机色
- 完整代码示例:
# -*- coding: utf-8 -*-
# Author : Konmu
# 使用 Python 生成类似于下图中的字母验证码图片
import string
import random
from PIL import Image,ImageDraw,ImageFont,ImageFilter
def genUnit():
ascii_and_num = string.ascii_uppercase + string.digits
Verification_Code = random.choices(ascii_and_num,k=4) # 第二个参数表示取四次
return(Verification_Code)
#生成四位随机验证码
def back_rndColor():
return(random.randint(64,255),random.randint(64,255),random.randint(64,255))
#生成填充的随机色(用作背景色)
def code_rndColor():
return(random.randint(32,127),random.randint(32,127),random.randint(32,127))
#生成验证码的随机色
if __name__ == '__main__':
#创建背景画布(设置宽高)
width = 60*4
height = 60
image = Image.new('RGB',(width,height),(255,255,255))
#创建一个纯白的背景图,此方法不指定颜色的话默认是纯黑色
font = ImageFont.truetype('C:/xxx/字酷堂海藏楷体.ttf',36)
#指定字体及大小,字体文件存在Windows/Fonts目录下
draw = ImageDraw.Draw(image)
#创建绘制draw对象
for x in range(width):
for y in range(height):
draw.point((x,y),fill=back_rndColor())
#填充背景
for t in range(4):
draw.text((60*t + 10,10),genUnit()[t],font=font,fill=code_rndColor())
#图片填充文字(类似第一个题)
image = image.filter(ImageFilter.BLUR)
#图像模糊处理
image.save('C:/xxx/Desktop/Ver_code.png')
- 注:
如果觉得生成图片太模糊,可以选择换一种滤镜,这里推荐一种ImageFilter.SMOOTH(平滑滤波) - 最终效果:
原文地址:https://www.cnblogs.com/Konmu/p/12522578.html
时间: 2024-10-09 03:27:41