from PIL import Image, ImageDraw, ImageFont
import random
import os
# 字符集
CH_PLATE_CODE = [
"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑",
"苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤",
"桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁",
"新", "挂", "学", "警", "军", "应", "急", "民", "航", "港",
"澳", "领", "使",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "J", "K",
"L", "M", "N", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z", "I", "O"
]
# 创建保存图像的文件夹
output_dir = "1"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 加载字体,使用 DejaVu 系列字体
font_path = "/usr/share/fonts/truetype/win/simsun.ttf" # 你可以换成其他支持中文的字体
font = ImageFont.truetype(font_path, 15) # 设置字体大小
# 生成1000张图片
for i in range(1000):
# 创建图像
image = Image.new('RGB', (120, 24), (255, 255, 255)) # 白色背景
draw = ImageDraw.Draw(image)
# 随机选择7-8个字符
num_chars = random.randint(7,7)
chars = random.sample(CH_PLATE_CODE, num_chars)
if i %50 == 0:
num = i//50%10
chars[3:] = ["%d"%num for k in range(4)]
print(chars)
# 计算每个字符的位置
x_offset = 2
name_img=''
for char in chars:
# 获取字符的边界框
name_img+=char
bbox = font.getbbox(char)
char_width = bbox[2] - bbox[0] # 字符宽度
draw.text((x_offset, 2), char, font=font, fill=(0, 0, 0)) # 黑色文字
x_offset += char_width + 2 # 字符之间加点间隔
# 保存图像,使用索引命名
image.save(os.path.join(output_dir, f"{name_img}.png"))
print("1000张图片已生成!")
随机生成车牌数据
于 2024-12-26 20:03:58 首次发布