生成倾斜验证码问题

2015-10-28 16:45:03 +08:00
 RadAsm

想生成字母是倾斜的验证码,代码如下:

#!/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))

主要是想其中的文字能够倾斜。。。

结果生成这样了:
生成的图片

怎么才能去除那些嘿嘿的东西呢。。。

4350 次点击
所在节点    Python
6 条回复
gowithwind
2015-10-28 16:50:13 +08:00
先用随机颜色填充背景.
RadAsm
2015-10-28 16:53:20 +08:00
@gowithwind
已经先填充好了,但是因为之后我的 60*60 的图片是单独生成,并粘贴到原来的图片上的,所以之前的随机填充色没了。。。
gowithwind
2015-10-28 16:55:33 +08:00
@RadAsm
image=Image.new('RGB',(width,height),(255,255,255))
这里随机填充
gowithwind
2015-10-28 17:00:22 +08:00
@RadAsm
搞错了.不好意思.
一个方案是可以再扫描下图像,把黑色换成随机色.(出现黑色应该是旋转图像用黑色来填补了.)
RadAsm
2015-10-28 17:20:11 +08:00
@gowithwind 嗯,可以了,谢谢你!😊
fy
2015-10-29 16:23:01 +08:00
不错,我最近在想如果直接生成 svg ,是不是比生成图片更加轻量呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231758

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX