想生成字母是倾斜的验证码,代码如下:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
#生成验证码图片
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random
#chr 转成相应的 ascll 值
def rndChar():
return chr(random.randint(65,90))
def rndColor():
return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
def rndColor2():
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 = ImageFont.truetype('Arial.ttf',36)
draw = ImageDraw.Draw(image)
for x in range(width):
for y in range(height):
draw.point((x,y),fill=rndColor())
word=''
for t in range(4):
imaget = Image.new('RGB',(60,60),(255,255,255))
drawt = ImageDraw.Draw(imaget)
for x in range(60):
for y in range(60):
drawt.point((x,y),fill=rndColor())
c = rndChar()
word=word+c
drawt.text((12,12),c,font=font,fill=rndColor2())
imaget = imaget.rotate(random.randint(-30,30))
image.paste(imaget,(60*t,0))
# for t in range(4):
# draw.text((60*t+10,10),rndChar(),font=font,fill=rndColor2())
image = image.filter(ImageFilter.BLUR)
image.save('hehe.jpg','jpeg')
print('word is %s ' % (word))
主要是想其中的文字能够倾斜。。。
结果生成这样了:
生成的图片
怎么才能去除那些嘿嘿的东西呢。。。
按照 @gowithwind 同学,扫描后可以了
for x in range(width):
for y in range(height):
c=image.getpixel((x,y))
if c==(0,0,0):
draw.point((x,y),fill=rndColor())
:-D
1
gowithwind 2015-10-28 16:50:13 +08:00
先用随机颜色填充背景.
|
2
RadAsm OP @gowithwind
已经先填充好了,但是因为之后我的 60*60 的图片是单独生成,并粘贴到原来的图片上的,所以之前的随机填充色没了。。。 |
3
gowithwind 2015-10-28 16:55:33 +08:00 1
|
4
gowithwind 2015-10-28 17:00:22 +08:00
|
5
RadAsm OP @gowithwind 嗯,可以了,谢谢你!😊
|
6
fy 2015-10-29 16:23:01 +08:00
不错,我最近在想如果直接生成 svg ,是不是比生成图片更加轻量呢?
|