python 获取验证码图片,Python抓取登录验证码图片
#!/usr/cjdqz/python
#编码:utf-8
导入随机
fromPILimportImage,ImageDraw,ImageFont,Image过滤器
进口斯特林乔
#地图:将潜艇用热中子反应堆(海底热反应堆的缩写)函数应用于后续序列的每个元素
数字=""。加入(映射(字符串,范围(10))
chars=" " .加入((数字) )
尺寸:图像的大小、格式(宽度、高度),默认值为) 120、30
字符:允许的字符集合、格式字符串
模式:图像模式,默认为RGB
背景颜色:背景色,默认为白色
fg _颜色:前景色,验证码文字颜色
font_size:验证码字体大小
font_type:验证码字体,默认为摩纳哥。TTF字体
长度:验证码字数
绘制点数:是否描绘了噪声点
点数机会:干涉点出现的概率、大小范围[ 0,50 ]
def create _ code (size=(120,30),chars=chars,mode=RGB ,BG _ color=(255,255)),fg_color=)。font _ type=/usr/share/fonts/truetype/ARP hic/ukai .TTC,长度=6,draw_poinits=True,point_Chang
窗口,高度=尺寸
创建img=image.new(模式,大小,背景颜色)#图表
创建draw=imagedraw.draw(img)画笔
defget_chars():
""""生成指定长度的字符串,并返回列表格式""
返回随机。示例(字符,长度).
defcreate_points().
绘制""""干涉点""
chance=min(50,max ) 0,int (point _ chance))大小限制为[ 0,50 ]。
forwinxrange(宽度) :
forhinxrange(高度) :
tmp=random.randint (0,50))))。
如果tmp 50-机会:
draw.point () w,h),fill=) 0,0,0))
defcreate_strs():
呈现""""验证码字符""
c_chars=get_chars(
STRS=%s% .join(c_chars))))。
font=图像字体。truetype(font _ type,font_size)。
font_width,font_height=font.getsize(strs)
draw.text((width-font_width )/3,)height-font_height )/4),strs,font=font,fill=fg_color)
返回短串联重复序列
ifdraw_poinits:
创建点数()
strs=create_strs(
#图形扭曲参数
params=[
1 -浮动(random.randint (1,2 ) )/100,
0,
0,
0,
1 -浮动(random.randint (1,10 ) )/100,
浮动(random.randint (1,2 ) )/500,
0.001、
float (random.randint (1,2 ) )/500
]
img=img.transform(size,Image .透视,参数)#创建扭曲
img=img.filter(图像过滤器。edge _ enhance _更多)过滤器、边界强调(大于阈值) ) )
返回img海峡
if__name__==__main__ :
code_img,strs=create_code(
buf=StringIO .斯特林乔(
code_img.save(buf, JPEG ,质量=70 ) )。
FP=open(d.JPEG)、w))
FP.write(buf.getvalue)))
fp.close())
版权属于:懒汉部落阁
转载时,应当以链接形式注明原始来源和本声明。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。