想生成字母是倾斜的验证码,代码如下:
#!/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 @ 已经先填充好了,但是因为之后我的 60*60 的图片是单独生成,并粘贴到原来的图片上的,所以之前的随机填充色没了。。。 |
![]() | 3 gowithwind 2015-10-28 16:55:33 +08:00 ![]() |
![]() | 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 ,是不是比生成图片更加轻量呢? |