您的当前位置:首页正文

Python脚本绘制验证码

2024-08-01 来源:骅佗教育

在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__玖鞒 一般情况下,对于字符型验证码的识别流程如下: 准备原始图片素材 图片预处理 图片字符切割 图片尺寸归一化 图片字符标记 字符图片特征提取 生成特征和标记对应的训练数据集 训练特征标记数据生成识别模型 ...