Python 은 PIL 모듈 을 사용 하여 무 작위 인증 코드 를 생 성 합 니 다.

4551 단어 Python인증번호
Python 에서 랜 덤 인증 코드 를 생 성 하려 면 PIL 모듈 을 사용 해 야 합 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
설치:

pip3 install pillow
기본 사용
1.그림 만 들 기

from PIL import Image
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
 
#          
# img.show()
 
#      
with open('code.png','wb') as f:
 img.save(f,format='png')
2.붓 을 만들어 그림 에 임의의 내용 을 그 리 는 데 사용

img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')
3.화점

img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')
#      :    
#      :    
draw.point([100, 100], fill="red")
draw.point([300, 300], fill=(255, 255, 255))
4.선 긋 기

img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')
#      :           
#      :    
draw.line((100,100,100,300), fill='red')
draw.line((100,100,300,100), fill=(255, 255, 255))
5.원 을 그린다

img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')
#      :           (       )
#      :      
#      :      
#      :    
draw.arc((100,100,300,300),0,90,fill="red")
6.텍스트 쓰기

img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')
#      :      
#      :      
#      :    
draw.text([0,0],'python',"red")
7.특수 문자

img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')
#      :        
#      :      
font = ImageFont.truetype("kumo.ttf", 28)
#      :      
#      :      
#      :    
#      :    
draw.text([0, 0], 'python', "red", font=font)
이미지 인증번호

import random

def check_code(width=120, height=30, char_length=5, font_file='kumo.ttf', font_size=28):
code = []
img = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255))
draw = ImageDraw.Draw(img, mode='RGB')

def rndChar():
"""
       
:return:
"""
return chr(random.randint(65, 90))

def rndColor():
"""
      
:return:
"""
return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255))

#    
font = ImageFont.truetype(font_file, font_size)
for i in range(char_length):
char = rndChar()
code.append(char)
h = random.randint(0, 4)
draw.text([i * width / char_length, h], char, font=font, fill=rndColor())

#     
for i in range(40):
draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())

#      
for i in range(40):
draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())
x = random.randint(0, width)
y = random.randint(0, height)
draw.arc((x, y, x + 4, y + 4), 0, 90, fill=rndColor())

#     
for i in range(5):
x1 = random.randint(0, width)
y1 = random.randint(0, height)
x2 = random.randint(0, width)
y2 = random.randint(0, height)

draw.line((x1, y1, x2, y2), fill=rndColor())

img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)
return img,''.join(code)


if __name__ == '__main__':
# 1.     
# img,code = check_code()
# img.show()

# 2.     
# img,code = check_code()
# with open('code.png','wb') as f:
# img.save(f,format='png')

# 3.     (Python3)
# from io import BytesIO
# stream = BytesIO()
# img.save(stream, 'png')
# stream.getvalue()

# 4.     (Python2)
# import StringIO
# stream = StringIO.StringIO()
# img.save(stream, 'png')
# stream.getvalue()

pass
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기