py的库就是多,简单应用,最近看了一个验证码生成的简单操作,挺有意思的,直接上代码,看吧。
# coding=utf-8
import random
from PIL import Image, ImageFont, ImageDraw
# 随机生成大小写字母数字
def get_rand(many):
for i in range(many):
s = ''
n = random.randint(1, 2)
if n == 1:
num1 = random.randint(0, 9)
s += str(num1)
else:
n1 = random.randint(1, 2)
n2 = random.randint(1, 26)
if n1 == 1:
num1 = chr(64+n2)
s += num1
else:
num1 = chr(96+n2)
s += num1
return s
# 随机颜色
def rnd_color():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
# 随机背景颜色
def rnd_color2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
# 设置图像模式尺寸颜色
width = 60*4
height = 60
# 显示
image = Image.new('RGB', (width, height), (0, 0, 0))
# 创建字体对象
font = ImageFont.truetype('AGENCYB.TTF', 40)
# 写入对象
draw = ImageDraw.Draw(image)
# 填充像素点
for i in range(width):
for j in range(height):
draw.point((i, j), fill=rnd_color2())
draw.line((0, 0 + random.randint(0, height // 2), width, 0 + random.randint(0, height // 2)), fill=rnd_color())
draw.line((0, height - random.randint(0, height // 2), width, height - random.randint(0, height // 2)), fill=rnd_color())
draw.line((0, 0, 240, 60), width=10, fill=rnd_color())
for i in range(6):
# 写入信息写入坐标
draw.text((40*i+15, 10), get_rand(6), font=font, fill=rnd_color())
image.show()