引
原本应该在第一张写的,但是我着实不善表达,写博客的主要目的也是要求自己能说清楚而不是只有脑子清楚
思路概述
- 设计json格式
- 设计绘画接口
- json解析
- 绘图
json解析
载入json构建drawing模块能利用的python数据对象*
## API设计
```python
def deal_json(path: pathlib.Path) \
-> tuple[list[tuple[int, int]], int, int]:
"""
解析json文件
:param path: json文件路径
:return: 路径列表,原图片长宽高
"""
画图模块
利用来自json解析模块或者ContourAnalysis模块的二维列表,包含轮廓,以及图片的长宽绘画
有一个问题需要解决,绘图库turtle的单例 原因是因为在要适配在一个进程中连续画图,来个单例比较好
API设计
class _TurtleManager:
"""内部单例,自动管理 turtle 生命周期"""
_screen = None
_turtle = None
is_first_run = True # 标记是否是第一次运行
@classmethod
def get_instance(cls):
"""程序结束时手动关闭"""
...
@classmethod
def reset(cls):
"""重置画布和海龟状态(不关闭窗口)"""
...
@classmethod
def close(cls):
"""程序结束时手动关闭"""
...
def draw(
paths: list[list[tuple[int, int]]],
img_h,
img_w,
delay_time: int = 10) -> None:
"""
利用paths绘制
:param paths: 轮廓列表
:param img_h: 原图片高
:param img_w: 原图片宽
:param delay_time: :return: None
"""
def close_turtle():
"""程序结束时调用,关闭窗口"""
_TurtleManager.close()