圖片驗證碼推導邏輯,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())



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM