Python脚本绘制验证码
在Python中有个强大的绘图库pil,可以实现验证码的绘制功能。
PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。
由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。
例讲述了python使用pil生成图片验证码的方法。分享给大家供大家参考。具体实现方法如下:
# -*- coding: utf-8 -*- #导入三个模块 import Image,ImageDraw,ImageFont import random import math '''基本功能''' #图片宽度 width = 100 #图片高度 height = 40 #背景颜色 bgcolor = (255,255,255) #生成背景图片 image = Image.new('RGB',(width,height),bgcolor) #加载字体 font = ImageFont.truetype('FreeSans.ttf',30) #字体颜色 fontcolor = (0,0,0) #产生draw对象,draw是一些算法的集合 draw = ImageDraw.Draw(image) #画字体,(0,0)是起始位置 draw.text((0,0),'1234',font=font,fill=fontcolor) #释放draw del draw #保存原始版本 image.save('1234_1.jpeg') '''演示扭曲,需要新建一个图片对象''' #新图片 newImage = Image.new('RGB',(width,height),bgcolor) #load像素 newPix = newImage.load() pix = image.load() offset = 0 for y in range(0,height): offset += 1 for x in range(0,width): #新的x坐标点 newx = x + offset #你可以试试如下的效果 #newx = x + math.sin(float(y)/10)*10 if newx < width: #把源像素通过偏移到新的像素点 newPix[newx,y] = pix[x,y] #保存扭曲后的版本 newImage.save('1234_2.jpeg') '''形变一下''' #x1 = ax+by+c #y1 = dx+ey+f newImage = image.transform((width+30,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0)) newImage.save('1234_3.jpeg') '''画干扰线,别画太多,免得用户都看不清楚''' #创建draw,画线用 draw = ImageDraw.Draw(newImage) #线的颜色 linecolor= (0,0,0) for i in range(0,15): #都是随机的 x1 = random.randint(0,width) x2 = random.randint(0,width) y1 = random.randint(0,height) y2 = random.randint(0,height) draw.line([(x1, y1), (x2, y2)], linecolor) #保存到本地 newImage.save('1234_4.jpeg')
骅佗教育还为您提供以下相关内容希望对您有帮助:
如何利用Python做简单的验证码识别
pip3 install pillow or easy_install Pillow# 3、安装tesseract-ocr:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe,安装在C:\Program Files\下# 4、要求python默认安装在C盘# http://www.cnblogs.com/TTyb/p/5996847.html# 代码:# !
Python开发文字点选验证码,有什么推荐的方法?
OpenCV库:OpenCV是一个计算机视觉库,提供了大量的图像处理和计算机视觉算法,包括图像读写、滤波、边缘检测、特征提取等。可以使用OpenCV库对验证码图片进行预处理,提取出验证码中的字符或单词,以便后续的识别。PyTesseract库:PyTesseract是一个Python的OCR库,基于Google的Tesseract-OCR引擎,可以对图像中的...
请教生成如图验证码的python算法
draw.line([begin, end], fill = linecolor)最后创建扭曲,加上滤镜,用来增强验证码的效果。image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR) #创建扭曲 image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) #滤镜,边界加强 image...
Python实现滑块验证码识别详解
在实际应用中,可以将此模型集成到爬虫程序中,实现自动识别滑块验证码,从而提高数据爬取效率。尽管该模型存在一些局限性,但已经能够达到较高的准确率,成为一种可行的滑块验证码识别方案。以下是完整的Python代码实现:python Copy code import cv2 import numpy as np import os def load_data():datas...
使用python来写脚本,如何来处理验证码的问题,每次登录时验证码都不...
如果是想让代码识别的话,要看验证码的复杂程度了,如果比较简单,使用图像处理说不定可以解决(我不会,不过网上应该有资料,就算没有python的,其他语言的也有),但是如果是复杂的,建议你把验证码下载下来,如果有图形界面,就在界面中显示,如果没有,就下到一个目录里,自己取找,然后人工识别吧。
Python 设计一个函数产生指定长度的验证码 length = len(base_str...
random.randint()取的数的区间是前后封闭的。也就是可能会取到last_pos 如果不减1那么就会出错的。all_chars[len(all_chars)]就出错了。
python 验证码加时间戳的功能是怎么实现的
param font_type: 验证码字体,默认为 ae_AlArabiya.ttf param length: 验证码字符个数 param draw_lines: 是否划干扰线 param n_lines: 干扰线的条数范围,格式元组,默认为(1, 2),只有draw_lines为True时有效 param draw_points: 是否画干扰点 param point_chance: 干扰点出现的概率,大小范围...
【python】爬虫:短信验证码的获取
4. 关于获取验证码的方法,不同的网站有不同的策略,但总体来说,可以归纳为几种主要方式。5. 我将以苏宁易购为例,这是一个界面设计精美的网站,来说明短信验证码获取的基本步骤。6. 以下是后续的程序代码:7. 结论:我分享这个爬虫程序的初衷是为了学习目的。如果有任何问题或疑问,欢迎读者留言...
Python通过百度api识别验证码,并结合selenium实现自动登陆功能_百度...
使用的库:baidu-aip, pillow, selenium. 如需安装,可于cmd中输入:点击此处,获取海量Python学习资料!实现自动登陆功能包括账号密码输入与验证码识别。账号密码通过selenium的find_element_by_id() send_keys()自动输入。具体方法请参考其他博文。验证码的获取与识别分为四个步骤:(一)使用selenium最...
pixel图片素材-如何利用Python做简单的验证码识别
pythonSDK版本 PIL 图片处理库 libsvm 开源的svm机器学习库 关于环境的安装,不是本文的重点,故略去。 6__玖鞒 一般情况下,对于字符型验证码的识别流程如下: 准备原始图片素材 图片预处理 图片字符切割 图片尺寸归一化 图片字符标记 字符图片特征提取 生成特征和标记对应的训练数据集 训练特征标记数据生成识别模型 ...