python使用pil生成图片验证码的方法

 更新时间:2015年05月08日 12:37:58   作者:marising  
这篇文章主要介绍了python使用pil生成图片验证码的方法,涉及Python操作Image,ImageDraw,ImageFont等模块的相关技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 检测python爬虫时是否代理ip伪装成功的方法

    检测python爬虫时是否代理ip伪装成功的方法

    这篇文章主要介绍了检测python爬虫时是否代理ip伪装成功的方法以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。,需要的朋友可以参考下
    2019-07-07
  • python 将print输出的内容保存到txt文件中

    python 将print输出的内容保存到txt文件中

    本文通过代码给大家介绍了python 将print输出的内容保存到txt文件中,代码很简短,需要的朋友可以参考下
    2018-07-07
  • python本地降级pip的方法步骤

    python本地降级pip的方法步骤

    高版本的pip在使用过程中会出现很多的不兼容问题,而且不留神很容易把pip给升级了,下面这篇文章主要给大家介绍了关于python本地降级pip的方法步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • numpy中的transpose函数中具体使用方法

    numpy中的transpose函数中具体使用方法

    本文主要介绍了numpy中的transpose函数中具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python Selenium 库的使用技巧

    python Selenium 库的使用技巧

    这篇文章主要介绍了python Selenium 库的使用技巧,帮助大家更好的理解和学习python Selenium 库,感兴趣的朋友可以了解下
    2020-10-10
  • Python实现两种多分类混淆矩阵

    Python实现两种多分类混淆矩阵

    这篇文章主要为大家介绍了Python实现两种多分类混淆矩阵,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python利用Turtle绘制哆啦A梦和小猪佩奇

    Python利用Turtle绘制哆啦A梦和小猪佩奇

    turtle库是python的基础绘图库,经常被用来介绍编程知识的方法库,是标准库之一,利用turtle可以制作很多复杂的绘图。本文将为大家介绍通过turtle库绘制制哆啦A梦和小猪佩奇,感兴趣的小伙伴可以学习一下
    2022-04-04
  • 利用python将 Matplotlib 可视化插入到 Excel表格中

    利用python将 Matplotlib 可视化插入到 Excel表格中

    这篇文章主要介绍了利用python将 Matplotlib 可视化 插入到 Excel 表格中,通过使用xlwings模块来控制Excel插入图表,具体详细需要的朋友可以参考下面文章内容
    2022-06-06
  • Python实现将json文件中向量写入Excel的方法

    Python实现将json文件中向量写入Excel的方法

    这篇文章主要介绍了Python实现将json文件中向量写入Excel的方法,涉及Python读取、遍历json格式数据及Excel文件写入相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • python生成圆形图片的方法

    python生成圆形图片的方法

    这篇文章主要为大家详细介绍了python生成圆形图片的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论