123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import argparse
- import datetime
- import os
- import uuid
- from PIL import Image, ImageFont, ImageDraw
- from tqdm import tqdm
- def create_img(font_path, text, save_path, cnt):
- fontSize = 25
- # 字体样式,
- font = ImageFont.truetype(font_path, fontSize, encoding="gbk")
- im = Image.new("RGB", (int(font.getbbox(text.rstrip('\n'))[2]), font.getbbox(text)[3]), (255, 255, 255))
- dr = ImageDraw.Draw(im)
- # 文字颜色
- dr.text((0, 0), text, font=font, fill="#000000")
- time = datetime.datetime.now()
- t = str(time.year).zfill(4) + '-' + str(time.month).zfill(2) + '-' + str(time.day).zfill(2)
- if not os.path.exists("%s/%s/" % (save_path, font_path.split('/')[-1][0:-4])):
- os.makedirs("%s/%s/" % (save_path, font_path.split('/')[-1][0:-4]))
- # 图片命名
- img_name = 'kdan_' + t + '_' + str(cnt).zfill(4) + '_' + str(uuid.uuid1())[0:8] + '.jpg'
- save_path = "%s/%s/" % (save_path, font_path.split('/')[-1][0:-4]) + img_name
- # 保存
- im.save(save_path)
- def get_all_labels(img_fold):
- # 获取字体文件夹列表
- img_fold_list = os.listdir(img_fold)
- # label_list.txt文件
- fp_label = open(str(img_fold) + '/label_list.txt', 'w')
- cnt = 0
- for img_fold_in in img_fold_list:
- if img_fold_in.endswith('.txt'):
- continue
- # 字体名以及对应id写入label_list.txt
- fp_label.write(str(cnt) + ' ' + str(img_fold_in) + '\n')
- cnt += 1
- fp_label.close()
- def work(font_path, text_path, save_path):
- fontPath_list = os.listdir(font_path)
- print('generate images for fonts based on %s' % text_path)
- for fontPath in tqdm(fontPath_list):
- with open(text_path, 'r') as fpp:
- t = fpp.readlines()
- fpp.close()
- cnt = 0
- for text in t:
- create_img(str(font_path) + '/' + str(fontPath), text, save_path, cnt)
- cnt += 1
- get_all_labels(save_path)
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--font_dir', type=str, default='./font')
- parser.add_argument('--text_path', type=str, default='./text/eng_text_test.txt')
- parser.add_argument('--save_dir', type=str, default='./images')
- args = parser.parse_args()
- work(args.font_dir, args.text_path, args.save_dir)
|