模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理。这里介绍一下Python提供的枕头模块。
公益诉讼:Python图像库,Python的图像处理标准库,功能强大。
公益诉讼是第三方库,使用之前需要先进行安装。具体的命令如下:(如果安装了水蟒,这一步可以跳过)
<代码>美元pip安装枕头代码>
下面先简单介绍枕头的功能。
缩放图像,是枕头的一个功能,示例如下:
从公益诉讼导入图像 #打开图片,注意路径 img=Image.open (“pitbull.jpeg”) #获得图片尺寸 体重、身高=img.size 打印(“原图片尺寸:{}x {} '。格式(体重、身高) #进行缩放,缩放50% img。缩略图((体重//2,身高//2)) 打印(“调整后的图片尺寸:{}x {} '。格式(体重//2,身高//2)) #将缩放后的图片保存 img.save (thumbnail.jpg, jpeg)
枕头还有其他的功能,例如旋转,剪切,滤镜,输出文字,调色板等。
ImageFilter
下面尝试模糊图片处理:
从公益诉讼导入图像,ImageFilter #打开图片文件,注意路径 img=Image.open (“pitbull.jpeg”) #应用模糊滤镜 img2=img.filter (ImageFilter.BLUR) img2.save (blur.jpg, jpeg)
ImageFilter是Python提供的图像滤波,而ImageFilter。模糊是模糊滤波。
上面代码具体的效果如下:
同时枕头的ImageDraw提供了一些列绘图方法,使我们可以直接绘图。下面使用这种方法来尝试生成字母验证码图片:
从公益诉讼导入图像,ImageDraw ImageFont ImageFilter 从随机进口randint def random_char (): ''' 生成随机的字母 返回: 返回随机的字母 ''' 返回对应(randint (65、90)) def random_color (): ''' 生成随机颜色,每个颜色值在64 - 255年之间 返回: 返回随机的颜色,返回值的类型为元组。例如(65、98、243): ''' 返回(randint (64, 255), randint (64、255), randint (64、255),) def random_color_2 (): ''' 生成随机颜色,每个颜色值在32 - 127之间 返回: 返回随机颜色,返回值类型为元组。例如(33、87、121) ''' 返回(randint (127), randint (127), randint (127)) #生成的图片比例 宽度=60 * 4 身高=60 形象=形象。新(RGB,(宽度、高度),(255、255、255)) #创建字体对象 字体=ImageFont.truetype (YaHeiConsolas。ttf, 36) #创建画对象 画=ImageDraw.Draw(图片) #填充每个像素 x的范围(宽度): y的范围(高度): 画画。点((x, y),填补=random_color ()) #输出字母 范围的t (4): 画画。文本((60 t + 10 * 10), random_char(),字体=字体,填补=random_color_2 ()) #对生成的字母进行模糊效果处理 形象=image.filter (ImageFilter.BLUR) image.save (code.jpg, jpeg)
代码具体实现过程是,先用随机颜色填充背景,再生成字母,最后对图片进行模糊处理。具体实现效果如下:
代码在运行的过程中,可能会出现下面的错误:
IOError:那么不能打开资源
出现这个问题的原因是公益诉讼无法定位到字体文件的位置,可以考虑直接提供绝对位置。
字体绝对=ImageFont.truetype('//道路/字体。ttf, 36)
本篇文章提及枕头的仅是简单的部分功能,如果要继续了解公益诉讼的强大功能,可以参考枕头官方文档:
https://pillow.readthedocs.org/
以上所述是小编给大家介绍的Python模拟动态产生字母验证码图片功能,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!