按照老师教程修改了下,但是在暂时无法同时随机字母和数字。
Topic sourcefrom PIL import Image, ImageDraw,ImageFont, ImageFilter
import random
# 随机字母(含大小写)
def rndChar():
return chr(random.randint(65,122))
# 随机数字
def rndInt():
return chr(random.randint(48,57))
# 随机数字和字母
def rndChorIn():
return (chr(random.randint(48,57)) or chr(random.randint(65,122)))
# 随机颜色1
def rndColor():
return (random.randint(64,255), random.randint(64,255), random.randint(64,255))
# 随机颜色2
def rndColor2():
return (random.randint(32,127), random.randint(32,127), random.randint(32,127))
# 300 * 60
width = 60 * 5
height = 60
image = Image.new('RGB', (width, height), (255,255,255))
# 创建Pont对象
font = ImageFont.truetype('C:\Windows\Fonts\Arial.ttf', 40)
#创建Draw对象
draw = ImageDraw.Draw(image)
#填充每个像素
for x in range(width):
for y in range(height):
draw.point((x,y), fill=rndColor())
# 输出文字
for t in range(5):
draw.text((60 * t + 10, 10), rndChorIn(), font=font, fill=rndColor2())
# 模糊
image = image.filter(ImageFilter.BLUR)
image.save('code,jpg', 'jpeg')
这里面【rndChorIn】无法实现随机数字和字母。。
**最直接的方法在生成字母和数字函数之间再添加个随机选择:
def rndString():
l = random.randint(0,1)
if l:
return rndChar()
else:
return rndInt()
然后改下: draw.text((60 * t + 10, 10), rndString(), font=font, fill=rndColor2())
- 1
Dominias