コード例 #1
0
def generate_captcha(format='PNG', length=4, **kwargs):
    img, code = gvcode.generate(format=format, length=length, **kwargs)
    out = BytesIO()
    img.save(out, format=format)
    b64_img = base64.b64encode(out.getvalue())
    return 'data:image/{type};base64,{img}'.format(type=format.lower(),
                                                   img=b64_img), code
コード例 #2
0
def get_captcha():
    # 生成验证码并发送给前端
    img, code = gvcode.generate(size=(80, 27), length=4)
    session['code'] = code  # 将生成的验证码数据存入session
    out = StringIO()
    img.save(out, format='PNG')
    b64 = base64.b64encode(out.getvalue())
    result = "data:image/png;base64,"
    result = result + b64
    return result
コード例 #3
0
def generate_captcha_2(sequence):
    chars = [captcha_content[randint(0, len(captcha_content) - 1)]\
             for _ in range(captcha_length)]
    img, code = gvcode.generate(size=(captcha_size["width"],
                                      captcha_size["height"]),
                                chars=chars,
                                format="PNG",
                                draw_lines=False,
                                draw_points=False)
    img.save(data_save_dir + "/" + "".join(chars) + "_" + str(uuid.uuid4()) +
             ".jpg")
コード例 #4
0
def get_imageCode():
    # 生成验证码图片
    image, code = gvcode.generate()
    # 图片以二进制形式写入
    buf = BytesIO()
    image.save(buf, 'jpeg')
    buf_str = buf.getvalue()
    # 把buf_str作为response返回前端,并设置首部字段
    response = make_response(buf_str)
    response.headers['Content-Type'] = 'image/jpeg'
    # 将验证码字符串储存在session中
    session['imageCode'] = code
    return response
コード例 #5
0
ファイル: auth_views.py プロジェクト: zeus911/DevOpsApi
    def get(self, request):
        if request.META.has_key('HTTP_X_FORWARDED_FOR'):
            request_ip = request.META['HTTP_X_FORWARDED_FOR']
        else:
            request_ip = request.META['REMOTE_ADDR']

        verify = cache.get('verify_%s' % request_ip)
        if verify is not None:
            img, code = gvcode.generate()
            img.save(settings.VERIFY_IMG_PATH)
            cache.set('verify_%s' % request_ip, code, 1 * 24 * 60 * 60)
            return Response({'need_verify': True, 'verify_url': settings.VERIFY_IMG_URL})
        else:
            return Response({'need_verify': False, 'verify_url': ''})
コード例 #6
0
 def _createpicbygvcode(self):
     return gvcode.generate(size=(self.image_width, self.image_height))
コード例 #7
0
#!/usr/bin/python2
#coding=UTF-8

import base64
import gvcode
from cStringIO import StringIO

# size=(60, 27),
img, code = gvcode.generate(size=(80, 27), length=4)  # code:验证码的值

out = StringIO()
img.save(out, format='PNG')
b64 = base64.b64encode(out.getvalue())

result = "data:image/png;base64,"
result = result + b64
# print result, code
print code
img.save('./captcha.png')




コード例 #8
0
import gvcode
import os
s,v=gvcode.generate()

#s.show()
print((s.size))
print(v)

path = './image02'
if not os.path.exists(path):
    os.makedirs(path)

for i in range(2):
    pic,text=gvcode.generate()
    file_name= text+'.png'
    pic.save(path + file_name)
コード例 #9
0
def create_code():
    img, code = gvcode.generate(fg_color=(random.randint(10, 300),
                                          random.randint(50, 150),
                                          random.randint(50, 150)))
    return img, code
コード例 #10
0
ファイル: utils.py プロジェクト: simonli/Pybookstore
def generate_verification_code():
    chars = 'ABCDEFGHKMNPQRSTUVWXY'
    font_file = os.path.join(os.path.dirname(current_dir), 'static/BRLNSR.TTF')
    image, code = gvcode.generate(chars=chars, font_file=font_file)
    return image, code
コード例 #11
0
# coding=utf-8

import gvcode

img, code = gvcode.generate((240, 60))

print code

img.show()
img.save('verification.jpg')
コード例 #12
0
 def test_generate(self):
     im, vcode = gvcode.generate()
     assert len(vcode) == 4
コード例 #13
0
#生成激活码图片

# coding=utf-8

# def generate(self, size=(120, 30), chars=None, format='PNG', mode='RGB', bg_color=(255, 255, 255), fg_color=(0, 0, 255), font_size=18, font_file=None, length=4, draw_lines=True, line_range=(1, 2), draw_points=True, point_chance=2):

#     """
#     @param size: 图片的大小,格式(宽,高),默认为(120, 30)
#     @param chars: 允许的字符集合,格式字符串
#     @param format: 图片保存的格式,默认为 PNG,可选的为 GIF,JPEG,TIFF,PNG
#     @param mode: 图片模式,默认为 RGB
#     @param bg_color: 背景颜色,默认为白色
#     @param fg_color: 前景色,验证码字符颜色,默认为蓝色 #0000FF
#     @param font_size: 验证码字体大小
#     @param font_file: 验证码字体,默认为 None
#     @param length: 验证码字符个数
#     @param draw_lines: 是否划干扰线
#     @param line_range: 干扰线的条数范围,格式元组,默认为 (1, 2),只有 draw_lines 为s True 时有效
#     @param draw_points: 是否画干扰点
#     @param point_chance: 干扰点出现的概率,大小范围 [0, 100],只有 draw_points 为 True 时有效
#     @return: [0]: PIL Image 实例
#     @return: [1]: 验证码图片中的字符串

import gvcode
img, code = gvcode.generate()
print(code)
#img.show()
img.save('D:/www/python-ex/verification.jpg')
コード例 #14
0
ファイル: views.py プロジェクト: mudong1991/DevOps
    def login(self, request):
        """登录接口"""
        if 'HTTP_X_FORWARDED_FOR' in request.META:
            request_ip = request.META['HTTP_X_FORWARDED_FOR']
        else:
            request_ip = request.META['REMOTE_ADDR']
        username = request.data.get('username', '')
        password = request.data.get('password', '')
        verify_code = request.data.get('verify_code', '')

        # 失败次数和锁定时间
        login_fail_limit_times = settings.LOGIN_FAILED_TIMES_LIMIT
        lock_time = settings.LOCK_TIME

        # 响应状态码和数据
        result_code = 1
        result_data = {'result_msg': '', 'need_verify': False}

        # 判断用户是否存在
        exist_user = User.objects.filter(username=username).first()

        # 需要验证码首先验证验证码
        if cache.get('verify_%s' % request_ip) is not None:
            result_data['need_verify'] = True
            verify = cache.get('verify_%s' % request_ip)
            if str.lower(verify).encode('utf-8') != str.lower(verify_code).encode('utf-8'):
                # 重新生成验证码
                img, code = gvcode.generate()
                img.save(settings.VERIFY_IMG_PATH)
                cache.set('verify_%s' % request_ip, code, 1 * 24 * 60 * 60)
                result_code = 1
                result_data['result_msg'] = '对不起,验证码错误!'
                # 生成验证码
                img, code = gvcode.generate()
                img.save(settings.VERIFY_IMG_PATH)
                cache.set('verify_%s' % request_ip, code, 1 * 24 * 60 * 60)
                result_data['verify_url'] = settings.VERIFY_IMG_URL
                return Response({'result_code': result_code, 'result_data': result_data})
        else:
            result_data['need_verify'] = False

        # 验证码通过判断登录信息
        # 用户不存在
        if not exist_user:
            result_code = 1
            result_data['result_msg'] = '对不起,该用户不存在!'
        # 用户未激活
        elif exist_user.is_active is False:
            result_code = 1
            result_data['result_msg'] = '用户未激活,请联系管理员!'
        # 用户被锁定
        elif cache.get('error_login_lock_%s_%s' % (request_ip, username)):
            time_stmap = cache.get('error_login_lock_%s_%s' % (request_ip, username))
            lock_surplus_second = int(time_stmap) - int(time.time())
            result_code = 2
            result_data['result_msg'] = '用户已经锁定,请%s秒后再试。' % lock_surplus_second
            result_data['lock_surplus_second'] = lock_surplus_second
        else:
            # 登录认证
            user = authenticate(username=username, password=password)

            # 登录失败
            if user is None:
                # 记录登录者的IP和域名
                error_login_data = cache.get('error_login_%s_%s' % (request_ip, username))
                if error_login_data is None:
                    result_code = 1
                    cache.set('error_login_%s_%s' % (request_ip, username), 0, lock_time * 60)
                    result_data['result_msg'] = '登录失败,用户名密码错误!'
                else:
                    new_error_login_data = int(error_login_data) + 1
                    cache.set('error_login_%s_%s' % (request_ip, username), new_error_login_data, lock_time * 60)

                    if new_error_login_data < login_fail_limit_times:
                        result_data['result_msg'] = '账户密码错误,再输入%s次用户将会锁定%s分钟。' \
                                                    % (login_fail_limit_times - new_error_login_data, lock_time)
                        if new_error_login_data > 1:
                            result_data['need_verify'] = True
                    else:
                        # 锁定用户
                        cache.set('error_login_lock_%s_%s' % (request_ip, username), int(time.time()) + lock_time * 60, lock_time * 60)
                        lock_surplus_second = lock_time * 60
                        result_code = 2
                        result_data['result_msg'] = '用户已经锁定,请%s秒后再试。' % lock_surplus_second
                        result_data['lock_surplus_second'] = lock_surplus_second

            # 登录成功
            else:
                # user.backend = 'django.contrib.auth.backends.ModelBackend'  # 指定默认的登录验证方式
                # login(request, user)

                # token 登录
                Token.objects.filter(user=user).delete()
                token, _ = Token.objects.get_or_create(user=user)

                # 保存用户登录信息
                user_obj = User.objects.get(id=exist_user.id)
                user_obj.last_login = time_utils.get_current_time()
                user_obj.is_online = 1
                # user_obj.session_id = request.session.session_key  # 必须要先login登录完成,才会生成session_key
                user_obj.login_times += 1
                user_obj.save()

                result_code = 0
                cache.delete('verify_%s' % request_ip)
                cache.delete('error_login_%s_%s' % (request_ip, username))
                result_data['need_verify'] = False
                # result_data['sessionid'] = user_obj.sessionid
                result_data['csrftoken'] = get_token(request)
                result_data['token'] = token.key

        # 生成验证码
        if result_data["need_verify"]:
            img, code = gvcode.generate()
            img.save(settings.VERIFY_IMG_PATH)
            cache.set('verify_%s' % request_ip, code, 1 * 24 * 60 * 60)
            result_data['verify_url'] = settings.VERIFY_IMG_URL
        else:
            cache.delete('verify_%s' % request_ip)

        return Response({'result_code': result_code, 'result_data': result_data})
コード例 #15
0
#!/usr/bin/python3
# coding: utf-8

# 安装
# https://github.com/vcodeclub/graphic-verification-code
# pip install graphic-verification-code

import gvcode

gvcode.generate()
gvcode.base64()

# ('iVBORw0KGgoAAAANSUhEUgAAAHgAAAAeCAIAAABoq03CAAACyklEQVR4nN1aO04kMRB9NdoIQUIAEVcgIuAEKyQyUsShIOUmmwEpZyAgG4SI+GRTBB48bn+6XXZ52uxTB6OWXS5XPb+y20PMDAAAEdnfPaOFn+M2VUZcVPb/b0BEbe27ubKDtab2jKvHzFE0ekGXEANGM7Mx1yK9rs0ZNcqVyvwu9Q4nmeWlsUMF79ClESQ12qRxa2JSgEmXmsqu1PhEMTSxFhltXVXyoUiOcFJS438mW7iqnWO9Q+73AJnMueH+XRI5O0qCpbLd2TJmp4X+gYVo82wNJveXlwMHbm9xc7N2Qxpl9UozrdEhRlT7Z1YAcHgIIqjTKMpNZt7ZwfGxJ27lo6jTvyTQBqlw25/LJYjw/o69Pf1wezg7w+enyavvSSebIDXlIqKQB4sFVit9XqcENzpQi1WV6Y8LX6OLtSl6dl+tyoxljeUh5fgWSmAOWX3pmLE0W333QpbvkZbvZTkb34wp7zoKTpJOXwAgwvk5Li7ADGY8PfmrZMS4ihy79dzzbRzjHNXcXXpqaJUrXyVTIou8qWrJMRGOjvD8LHZgzGa7QGPDvtxBUlPKjKBioIOJxB3Lh/6B5e5uc2RwP3D387EpB+6BSyV/5fvoEAcHa5/Mrs7BX4CB6UCHlVAKIphl6m25RMGy1cL0YsbHR5VX0GX0y8s6Ug8Pm1kR4fT0H3NVncyECQrAGG43r67KU2jCvbsLZiyX5b61uFEGglOZVySRlu36eui2dHktInWNKEcnGGd0De/cdee+cRqIr+DKVj0GV3GyqDHj+nrwgcw+9/eTfWPnqdYnlMdHnJzkNnbz64pP+FJkStQxZaHGFHSLYRRfX0A2oaJtXB3I/+Y5FCuBD7ZLqnGZqrRitNWplEx3fm+Q0r39fby9lWz4ep+wCNL8TV4Vhepha4A0bN39JayuDktrbME13jrKr6/CjrMw+jfeOlbiGyMXxYAIZpe8AAAAAElFTkSuQmCC',
#  'QnCg')

def main():
    pass


if __name__ == '__main__':
    main()
コード例 #16
0
def CAPTCHAimg():
    s=gvcode.generate()
コード例 #17
0
 def _createpicbygvcode(self):
     return gvcode.generate(size=(IMAGE_WIDTH, IMAGE_HEIGHT))
コード例 #18
0
#实现最简单,图片效果稍差

import gvcode
s, v = gvcode.generate()
s.save('./%s.jpg' % v)
コード例 #19
0
# -*- coding:utf-8 -*-
# @author :adolf
import gvcode

s, v = gvcode.generate()    #序列解包

print(s)

print(v)