本汉字笔顺字卡生成工具,用于批量制作小学语文识字教学卡片。用户只需输入目标汉字,程序自动从开源数据源获取汉字笔画矢量坐标,调用拼音库生成带声调拼音;支持手动自定义修正汉字笔顺、指定每一笔的笔画名称,未自定义汉字可自动粗略识别横、竖。程序采用自适应网格布局,自动排版,生成的卡片包含完整汉字总览图与分步笔顺效果图,当前书写笔画标红高亮,附带笔画名称标注;生成图片自动存入指定文件夹,文件名附加时间戳避免覆盖。可直接导出图片打印,用于儿童识字、笔顺教学。
1. **核心配置区(最顶部,用户修改这里)**
- `TARGET_TEXT`:待生成汉字,支持批量汉字
- `CUSTOM_ORDER`:**笔顺强制修正字典**,当开源字库笔顺错误时,手动重排笔画下标
- `CUSTOM_NAMES`:**自定义笔画名称字典**,手动指定每个笔画叫横 / 竖 / 撇 / 捺 / 点;没有配置的字自动通过坐标估算笔画名
- 全局开关:`ROTATE_180` 控制画布是否翻转 180 度;输出文件夹`OUTPUT_DIR`
2. **网络请求函数 `get_hanzi_data(char)`**
从 `hanzi-writer-data` CDN 获取汉字笔画的路径坐标 JSON,里面包含每一笔的中线点位`medians`,网络超时 / 失败返回 None。
3. **拼音获取 `get_pinyin(char)`**
基于`pypinyin`库获取带声调拼音。
4. **辅助工具函数**
- `guess_stroke_name(median)`:自动估算笔画名称,只简单对比起点终点 XY 差值,横向长判定横、纵向长判定竖(**缺陷:撇捺点无法识别,只能靠 CUSTOM_NAMES 手动补**)
- `draw_stroke()`:绘制单条笔画,支持画布 180 度旋转,圆角线条,控制笔画粗细。
5. **绘图业务函数**
- `draw_step_card`:单步笔顺子图,**当前这一笔标红色,之前笔画黑色**;左上角标注第几步,底部展示笔画名称,带圆角背景框。
- `draw_main_card`:总览主卡片,完整全部笔画,下方展示拼音 + 总笔画提示。
6. **布局逻辑 `generate_card(char)` 核心**
- 拉取汉字数据,可选应用自定义笔顺重排;
- 计算笔画名称(优先自定义字典,没有则自动猜测)
- **动态网格布局 gridspec**
>
> 第一行:第 0 格放总览主卡,后面 4 格放 1~4 画;
> 超过 4 画之后,新起行,每行最多 7 个笔顺小卡片;自动计算需要多少行,解决笔画多(>11 画)子图溢出报错。
- 循环逐个生成每一画的子图,按计算好的行列放入网格;
- 保存图片到本地文件夹,时间戳命名,防止覆盖旧文件。
7. **入口主逻辑 `if __name__ == '__main__'`**
过滤输入文本,只保留中文字符,循环