zoukankan      html  css  js  c++  java
  • 图片验证码推导逻辑,Image.new,ImageDraw, ImageFont.truetype的用法

    
    #一,  创建图片并在图上添加文本 
    
    from PIL import Image,ImageDraw,ImageFont
    a = '我们不一样' # 定义文本
    font = ImageFont.truetype('./font/platech.ttf',24) # 定义字体,这是本地自己下载的
    img = Image.new('RGB',(300,300),(255,180,0)) # 新建长宽300像素,背景色为(255,180,0)的画布对象 
    draw = ImageDraw.Draw(img) # 新建画布绘画对象
    draw.text( (50,50), a,(255,0,0),font=font) # 在新建的对象 上坐标(50,50)处开始画出红色文本
    # 左上角为画布坐标(0,0)点
    img.show()
    img.save('./logs/img.jpeg')
    
    
    

    图片验证码代码实现

    
    # 推导步骤4(最终推导)  在图片上写字
        img_obj = Image.new('RGB',(360,35),get_random())
        # 将生成好的图片对象交给ImageDraw
        img_draw = ImageDraw.Draw(img_obj)  # 生成了一个画笔对象
        # 字体样式
        img_font = ImageFont.truetype('static/font/111.ttf',30)
    
        # 随机验证码    大小写英文加数字   五位 每一位都可以是大写字母或小写字母或数字
        code = ''
        for i in range(5):
            upper_str = chr(random.randint(65,90))
            lower_str = chr(random.randint(97,122))
            random_int = str(random.randint(0,9))
            # 随机选取一个
            tmp = random.choice([upper_str,lower_str,random_int])
            # 朝图片上写一个
            img_draw.text((i*60+60,0),tmp,get_random(),img_font)
            # 存储写的字
            code += tmp
        print(code)
        # 这个验证码后面其他视图函数可能要用到  找个地方存储一下 并且这个地方全局的视图函数都能访问
        request.session['code'] = code
        io_obj = BytesIO()
        img_obj.save(io_obj,'png')
        return HttpResponse(io_obj.getvalue())
    
    
    
  • 相关阅读:
    C#后台去除字符串最后一个字符
    C#后台验证含0的正整数
    jQuery提交表单的几种方式
    C#后台获取当前时间并格式化
    获取EasyUI日期输入框的值
    jQuery将字符串转换为数字
    JQ和JS获取span标签的内容
    正则
    json 拖拽
    event事件对象
  • 原文地址:https://www.cnblogs.com/ludundun/p/12056821.html
Copyright © 2011-2022 走看看