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

作者:marising 时间:2022-03-08 18:39:24 

本文实例讲述了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,pil,图片
0
投稿

猜你喜欢

  • ASP在线生成电话图片程序

    2007-10-06 23:06:00
  • python ImageDraw类实现几何图形的绘制与文字的绘制

    2023-10-14 10:58:13
  • asp 通用修改和增加函数代码

    2011-03-16 11:15:00
  • Oracle 子程序参数模式,IN,OUT,NOCOPY

    2009-10-23 18:08:00
  • python实现KNN近邻算法

    2022-08-13 08:24:58
  • jQuery入门之–属性(一)

    2009-07-12 15:29:00
  • asp如何创建Word 文件?

    2009-11-14 20:47:00
  • 对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解

    2022-07-17 02:28:27
  • python解析PDF程序代码

    2021-05-17 03:16:55
  • 进行数据处理的6个 Python 代码块分享

    2022-10-21 12:56:18
  • Python输出带颜色的字符串实例

    2023-08-20 05:28:03
  • python最小生成树kruskal与prim算法详解

    2021-06-10 01:56:45
  • Web 标准设计实践:Google 的首页

    2008-10-12 12:14:00
  • 语义化你的HTML标签和属性

    2008-06-12 13:18:00
  • Python matplotlib绘图建立画布及坐标系

    2021-03-28 02:56:07
  • python中文件操作与异常的处理图文详解

    2021-09-04 16:04:33
  • 使用python 获取进程pid号的方法

    2023-06-11 21:25:52
  • 使用python接入微信聊天机器人

    2022-04-08 10:07:23
  • Python scrapy爬取起点中文网小说榜单

    2022-11-06 14:34:11
  • 基于python实现判断字符串是否数字算法

    2022-10-15 00:46:58
  • asp之家 网络编程 m.aspxhome.com