Python生成二维码图片

from captcha.image import ImageCaptcha
import numpy as np
from PIL import Image
import random
import time
import os
import cv2
import matplotlib.pyplot as plt
number = ['0','1','2','3','4','5','6','7','8','9']
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
ALPHABET = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

# generate an random array of size 4  
def random_captcha_text(char_set=number+alphabet+ALPHABET,captcha_size=4):
    captcha_text=[]
    for i in range(captcha_size):
        random.seed(time.time())
        random.shuffle(char_set)
        # print(char_set)
        c=random.choice(char_set)
        captcha_text.append(c)
    return captcha_text

#  Randomly generate pictures of four numbers  
def gen_captcha_text_and_image():
    while(1):
        image=ImageCaptcha()
        captcha_text=random_captcha_text()
        captcha_text="".join(captcha_text)
        captcha=image.generate(captcha_text)
         # image.write(captcha_text, captcha_text '.jpg')  
        captcha_image=Image.open(captcha)
        # captcha_image.show()  
        captcha_image=np.array(captcha_image)
        # print(captcha_image.shape)  
        if captcha_image.shape==(60,160,3):
            break
    return captcha_text,captcha_image
if __name__ == '__main__':
    text,image=gen_captcha_text_and_image()
    print(text)
    print(image.shape)
    gray=np.mean(image,-1)
    print(gray.shape)
    fig=plt.figure()
    ax=fig.add_subplot(111)
    ax.text(0.1,0.9,text,ha='center',va='center',transform=ax.transAxes)
    plt.imshow(image)
    # plt.show()  
    path='./image'        #存放二维码为的位置
    for i in range(500):    #生成二维码的数量
        text,image=gen_captcha_text_and_image()
        fullPath=os.path.join(path,text+".jpg")
        cv2.imwrite(fullPath,image)
        print(text + "{0}/10000".format(i))

 

from captcha.image import ImageCaptcha
import numpy as np
from PIL import Image
import random
import time
import os
import cv2
import matplotlib.pyplot as plt
number = ['0','1','2','3','4','5','6','7','8','9']
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
ALPHABET = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

# generate an random array of size 4  
def random_captcha_text(char_set=number+alphabet+ALPHABET,captcha_size=4):
captcha_text=[]
for i in range(captcha_size):
random.seed(time.time())
random.shuffle(char_set)
# print(char_set)
c=random.choice(char_set)
captcha_text.append(c)
return captcha_text

#  Randomly generate pictures of four numbers  
def gen_captcha_text_and_image():
while(1):
image=ImageCaptcha()
captcha_text=random_captcha_text()
captcha_text="".join(captcha_text)
captcha=image.generate(captcha_text)
# image.write(captcha_text, captcha_text + '.jpg')  
captcha_image=Image.open(captcha)
# captcha_image.show()  
captcha_image=np.array(captcha_image)
# print(captcha_image.shape)  
if captcha_image.shape==(60,160,3):
break
return captcha_text,captcha_image
if __name__ == '__main__':
text,image=gen_captcha_text_and_image()
print(text)
print(image.shape)
gray=np.mean(image,-1)
print(gray.shape)
fig=plt.figure()
ax=fig.add_subplot(111)
ax.text(0.1,0.9,text,ha='center',va='center',transform=ax.transAxes)
plt.imshow(image)
# plt.show()  
path='./image'
for i in range(500):
text,image=gen_captcha_text_and_image()
fullPath=os.path.join(path,text+".jpg")
cv2.imwrite(fullPath,image)
print(text + "{0}/10000".format(i))

posted on 2020-04-11 20:25  一往无前!  阅读(314)  评论(0编辑  收藏  举报