本规范定义两种 ASCII 图像/动画编码格式:
本规范面向 编码器与解码器实现者,以“零歧义、可复现”为目标。
[Header]
[Palette]
[Frame 0]
[Frame 1]
...
[Frame N-1]
| 偏移 | 字段名 | 类型 | 大小 | 说明 |
|---|---|---|---|---|
| 0x00 | Magic | char[4] | 4 | 固定为 “ASC2” |
| 0x04 | Block Size | uint8 | 1 | 缩放比例(像素 → 字符) |
| 0x05 | Width | uint32 | 4 | 原始图像宽度(像素) |
| 0x09 | Height | uint32 | 4 | 原始图像高度(像素) |
| 0x0D | FPS | float32 | 4 | 帧率 |
| 0x11 | Frame Count | uint32 | 4 | 总帧数 |
字符网格尺寸计算规则:
CharWidth = max(1, floor(Width / BlockSize)) CharHeight = max(1, floor(Height / BlockSize))
| 字段 | 类型 | 说明 |
|---|---|---|
| Palette Count | uint16 | 调色板颜色数量 N |
| Color Data | N × 3 bytes | RGBRGB… |
每一帧由以下部分组成:
| 字段 | 类型 | 说明 |
|---|---|---|
| Data Size | uint32 | 当前帧指令流字节数 |
| Command Stream | bytes | 帧指令流 |
指令流由一系列 OpCode 顺序组成,直到填满全部网格。
跳过 N 个网格,保持上一帧内容。
| 字段 | 类型 | 大小 |
|---|---|---|
| Opcode | uint8 | 1 |
| Count | uint16 | 2 |
更新接下来的 N 个网格。
| 字段 | 类型 | 大小 |
|---|---|---|
| Opcode | uint8 | 1 |
| Count | uint16 | 2 |
| Chars | uint8[N] | N |
| Color Index | uint16[N] | 2N |
假设:
41 53 43 32 # 'ASC2'
08 # Block Size
10 00 00 00 # Width = 16
08 00 00 00 # Height = 8
00 00 20 41 # FPS = 10.0
01 00 00 00 # Frame Count = 1
02 00 # Palette Count = 2
F8 00 00 # Color 0 (Red)
00 F8 00 # Color 1 (Green)
0B 00 00 00 # Frame Data Size = 11
01 02 00 # OP_UPDATE, Count = 2
41 42 # 'A', 'B'
00 00 01 00 # Color indices
[Header]
[Body (Command Stream)]
| 偏移 | 字段 | 类型 | 大小 | 说明 |
|---|---|---|---|---|
| 0x00 | Magic | char[4] | 4 | 固定为 “ASC3” |
| 0x04 | Block Size | uint8 | 1 | 缩放比例 |
| 0x05 | Width | uint32 | 4 | 原始图像宽度 |
| 0x09 | Height | uint32 | 4 | 原始图像高度 |
字符网格尺寸计算规则同 ASC2。
ASC3 不支持 OP_SKIP,仅包含以下两种指令。
用于压缩连续重复网格。
| 字段 | 类型 | 大小 |
|---|---|---|
| Opcode | uint8 | 1 |
| Count | uint16 | 2 |
| Char | uint8 | 1 |
| Color | uint8[3] | 3 |
用于存储不重复的网格。
| 字段 | 类型 | 大小 |
|---|---|---|
| Opcode | uint8 | 1 |
| Count | uint16 | 2 |
| Pixels | N × 4 bytes | Char + RGB |
假设:
41 53 43 33 # 'ASC3'
08 # Block Size
10 00 00 00 # Width = 16
08 00 00 00 # Height = 8
01 02 00 # OP_RAW, Count = 2
41 FF 00 00 # 'A', Red
42 00 FF 00 # 'B', Green
本规范版本:1.0