Python实现动态验证码功能

上次切图用到了强大的PIL库,这次继续玩一玩PIL。在某些网站经常会看到验证码图片,于是就想到自己写一个看看,python写这种验证码好像可以写的很炫的样子。

这次主要用到PIL的图片生成功能,顺带用了一下模糊滤镜。

#!/usr/bin/python
# -*- coding:utf-8 -*-

from PIL import  Image, ImageDraw, ImageFont, ImageFilter
import random
from random import randint

#随机字母: 48-57 97-122 65-90
def randomChar():
    while(True):
        c = randint(48, 122)
        if checkValid(c):
            return chr(c)

def checkValid(c):
    number = (c >= 48) and (c <= 57)
    charLow = (c >= 97) and (c <= 122)
    charUpper = (c >= 65) and (c <= 90)
    if (number or charLow or charUpper):
        return True
    else:
        return False

# 随机颜色1:
def backgroundColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 随机颜色2:
def fontColor():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

#图片的大小
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象: font路径问题会导致can't open resource 错误,我是将字体放在当前目录的
font = ImageFont.truetype('arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill= backgroundColor())
# 输出文字:
for t in range(4):
    draw.text((60 * t + 10, 10), randomChar(),font = font, fill = fontColor())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('yzm.jpg', 'jpeg');

最后看看效果  验证码

最近的文章

网站排名受哪些影响,什么是SEO,SEO是什么意思

傻帽SEO,为啥用这个名字做文集,白帽做不好,也不懂,黑帽遥不可及,灰帽?白帽都还不懂,所以就叫个傻帽SEO吧!SEO——Search Engine Optimization,搜索引擎优化,都晓得是这个,咋个做,要做什么带着一头雾水,去看看SEO到底是个啥东西,我的理解SEO就是让网站在搜索的时候让别人更容易搜索到你的网站,找到你的网站的技术,想要做到这一点,要先了解哪些因素对网站的排名有影响,一下是一些总结:  先了解一些概念,至于具体怎么去操作,还需要一步一步去学习…

傻帽SEO继续阅读
更早的文章

python图片处理:切图

继爬取科技新闻之后,可以说大大的感觉到python的好处,不管是做些偷懒的事还是其他(至于是什么事就不吐露了),某次巧合之中,iOS程序需要更换APPicon,但是偏偏美工同学繁忙,怎么办,写个代码自己切图。主要使用PIL 图片处理库,这个库的功能太过复杂,包括切片、旋转、滤镜、输出文字、调色板,在这里主要利用一点皮毛功能。PIL 的安装windows安装PIL,pillow取代PIL pip install pillow在Debian/Ubuntu Linux下直接通过apt安装: ...…

人生苦短,就用python继续阅读