【python小练】0010

本文介绍了如何使用Python和PIL库生成包含随机字母的验证码图片,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第 0010 题:使用 Python 生成类似于下图中的字母验证码图片

字母验证码

 

 

思路:

1. 随机生成字符串

2. 创建画布往上头写字符串

3. 干扰画面

 

 

code:

# codeing: utf-8

from PIL import Image, ImageDraw, ImageFont, ImageFilter
import string
import random


def get4char():
    return [random.choice(string.ascii_letters) for _ in range(4)]  # 可以把‘_’换做任意字母,‘_’说明后续不用


def getcolor():
    return random.randint(30, 100), random.randint(30, 100), random.randint(30, 100)


def getpicture():
    width = 240
    height = 60

    image = Image.new('RGB', (width, height), (180, 180, 180))
    font = ImageFont.truetype('arial.ttf', 40)

    draw = ImageDraw.Draw(image)
    code = get4char()
    for ch in range(4):
        draw.text((60 * ch,30), code[ch], font=font, fill=getcolor())

    for _ in range(random.randint(1500, 3000)):
        draw.point((random.randint(0, width), random.randint(0, height)), fill=getcolor())

    image = image.filter(ImageFilter.BLUR)
    image.save("".join(code) + '.jpg')


getpicture()

 

Notes:

1. string.ascii_letters,大小写英文字母集合字符串

2. random.choice():Return a random element from the non-empty sequence seq. If seq is empty, raises IndexError.

3. random.randint():Return a random integer N such that <= <= b. Alias for randrange(a, b+1).

4. image.new('RGB', (w,h), (r,g,b))

 

result:

 

 

我觉得自己应该去把tutorial从头到尾先看一遍= - =

下一篇写怎么识别验证码咯。

 

转载于:https://www.cnblogs.com/liez/p/5327577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值