|
|
发表于 2017-10-14 15:01:26
|
显示全部楼层
本帖最后由 ooxx7788 于 2017-10-14 15:08 编辑
直接去找网上写好的代码最快。
比如用我这个。
- from PIL import Image, ImageDraw, ImageFont
- import random, numpy, string, os
- from multiprocessing import Pool
- def check_dirs():
- dir_path = r"E:\\checkcode"
-
- if not os.path.exists(dir_path):
- os.makedirs(dir_path)
- return dir_path
- def gen_checkcode(dir_path, n=4):
- if os.listdir(dir_path):
- filenname = str(max([int(f_names.split('.')[0].split('-')[0]) for f_names in os.listdir(dir_path)]) + 1)
- # filenname = random.randint(1, 10000)
- else:
- filenname = 0
-
- text = random.sample(string.ascii_letters, n)
- # print(text)
-
- rawArray = numpy.zeros((100, 300, 3), dtype=numpy.uint8)
- sh = rawArray.shape
- for i in range(sh[0]):
- for j in range(sh[1]):
- for k in range(sh[2]):
- rawArray[i][j][k] = random.randint(0, 255)
-
- im = Image.fromarray(rawArray)
- draw = ImageDraw.Draw(im)
-
- for i in range(len(text)):
- draw.text(((300 / n) * i + random.randint(0, 40), random.randint(0, 40)), text[i],
- font=ImageFont.truetype(r"C:\Windows\Fonts\arial.ttf", 40), # 字体
- fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
-
- im.save(dir_path + f"/{''.join(text)}.jpg")
- def main():
- dir_path = check_dirs()
- pages, l = 10, 4
-
- pool = Pool(processes=4)
- for i in range(pages):
- pool.apply_async(gen_checkcode, (dir_path, l,))
- pool.close()
- pool.join()
- if __name__ == '__main__':
- main()
复制代码
我自己都看不清的验证码。 |
|