Python PIL模块随机生成中文验证码

PIL是Python Imaging Library的简称,PIL是一个Python处理图片的库,提供了一系列模块和方法,比如:裁切,平移,旋转,改变尺寸等等。已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、ImageFile模块、ImageFileIO模块、ImageFilter模块、ImageFont模块、ImageGrab模块、ImageOps模块、ImagePath模块、ImageSequence模块、ImageStat模块、ImageTk模块、ImageWin模块、PSDraw模块。

在PIL库中,任何一个图像都是用Image对象来表示的,所以要加载一张图片,最简单的形式如下:

在PIL库中,最常用的模块有Image,ImageDraw,ImageEnhance,ImageFile等。

PIL的下载地址为:http://www.pythonware.com/products/pil/

接下来学习PIL中一些常见的操作:

1. 改变图片大小

使用resize方法可以方便的对图片进行缩放

2. 旋转图片

rotate方法可以进行旋转操作

3. 直线绘制

PIL库中的ImageDraw模块提供了图形绘制的基本功能,可以绘制直线,弧线,椭圆,矩形等等。

4. 绘制圆

5. 中文验证码实例

现在我们来研究利用Python如何生成中文验证码。其实这个问题简单,我们都知道验证码一般是用来防止网络机器

人采用无限次数的登录尝试破解密码,那么我们需要对这张图片随机生成中文字符来验证,一般来说会把图片的字表

现得很模糊,这样有效地防止机器人识别。所以我们除了要随机生成汉字,还要加入一些干扰线条等等。

           点击加入该群

原文地址:https://www.cnblogs.com/programmer123/p/11739247.html

时间: 2024-12-28 17:39:25

Python PIL模块随机生成中文验证码的相关文章

PIL模块与随机生成中文验证码

今天我们要学习的内容是如何利用Python生成一个随机的中文验证码,并将图片保存为.jpeg格式. 在这之前,你首先得了解Python中的PIL库.PIL是Python Imaging Library的简称,PIL是一个Python处理 图片的库,提供了一系列模块和方法,比如:裁切,平移,旋转,改变尺寸等等.在PIL库中,任何一个图像都是用 Image对象来表示的,所以要加载一张图片,最简单的形式如下: from PIL import Image image = Image.open("1.jp

利用 PIL模块实现生成动态验证码

简单说下需求: 当用户点击动态框时,实现实时更换动态库里的数字更换 模块: PIL  io 前端页面: <img src="/get_code/" id="id_img" width="260" height="35"> <script> $('#id_img').click(function () { let old_path = $('#id_img').attr('src'); $(this).a

随机生成数字验证码

protected void Page_Load(object sender, EventArgs e) { // 生成验证码 string checkCode = RandLetter(4); // 把新的验证码保存到Session中 Session["CheckCode"] = checkCode; // 输入验证码 CreateImages(checkCode); } /// <summary> /// 生成验证图片 /// </summary> ///

Java 随机生成中文姓名,手机号,邮编,住址

package lovo; import java.util.HashMap; import java.util.Map; /** * 随机生成中文姓名,性别,Email,手机号,住址 * @author Quentin */ public class SuperRandom { public static String base = "abcdefghijklmnopqrstuvwxyz0123456789"; private static String firstName=&quo

将字符串 由一个字符集 转成 另一个字符集 及 随机生成中文

今天遇到了一个麻烦 字符集的转换 因为这个网页是utf-8的  但是他获取了一个gbk的数据库 所以为了统一字符集必须要将获取的gbk数据转成utf-8 刚开始我的思路是acsii值得转换  先以gbk的字符集获取数据 然后 用mb_substr($str,$start,$len,'gbk') 来截取一个中文 然后在用ord()获取他的ascii值 之后用chr() 把ascii值转成中文   原理:字符的ascii是不变的  无论它是gbk 还是 utf-8 但是我发现输出的是一个乱码[无论是

Java随机生成中文汉字(使用高位低位转码)

1 Java随机生成中文汉字 2 /** 3 * 原理是从汉字区位码找到汉字.在汉字区位码中分高位与底位, 且其中简体又有繁体.位数越前生成的汉字繁体的机率越大. 4 * 所以在本例中高位从171取,底位从161取, 去掉大部分的繁体和生僻字.但仍然会有!! 5 * 6 */ 7 @Test 8 public void create() throws Exception { 9 String str = null; 10 int hightPos, lowPos; // 定义高低位 11 Ran

【SQL Server 学习系列】-- sql 随机生成中文名字

原文:[SQL Server 学习系列]-- sql 随机生成中文名字 1 DECLARE @fName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 姓氏 2 DECLARE @lName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 名字 3 4 INSERT @fName VALUES 5 ('赵'),('钱'),('孙'),('李')

python ranndom模块及生成验证码

python的random模块用于生成随机数,下面介绍一下random模块的常用方法: 取随机小数: 数学计算 random.random() 用于生成一个0-1的随机浮点数 0<=n<1.0 random.uniform(a,b) 生成一个指定范围内的随机浮点数, a<=n<=b 取随机整数: 彩票 抽奖 random.randint(a,b) 取一个指定范围内的整数 a<=n<=b random.randrange(start,stop,step) 在指定范围内,按

随机生成六位验证码函数版(python)

import random def code(n=6,alpha=True): s = '' # 创建字符串变量,存储生成的验证码 for i in range(n): # 通过for循环控制验证码位数 num = random.randint(0,9) # 生成随机数字0-9 if alpha: # 需要字母验证码,不用传参,如果不需要字母的,关键字alpha=False upper_alpha = chr(random.randint(65,90)) lower_alpha = chr(ra