# 图片转换工具使用说明 ## 问题修复说明 ### 之前的问题 转换器在生成的图片数据中错误地插入了换行符 (`\n`, 0x0A),导致墨水屏显示乱码。 ### 修复内容 修改了 `image_converter.py` 中的字节数组格式化逻辑: - **之前**: 每16个字节后直接写入 `\n`,导致换行符成为数据的一部分 - **现在**: 每16个字节后正确地分割字符串为多个 `b'...'` 部分 ## 使用方法 ### 1. 转换单个图片 ```bash python image_converter.py image <输入图片路径> <输出文件路径> [选项] ``` **示例:** ```bash # 基本用法 python image_converter.py image test_image.png output.py # 指定尺寸 python image_converter.py image test_image.png output.py --width 400 --height 300 # 反转颜色(白底黑字) python image_converter.py image test_image.png output.py --invert # 旋转90度 python image_converter.py image test_image.png output.py --rotate # 不使用抖动算法 python image_converter.py image test_image.png output.py --no-dither ``` **重要提示:** - 输出路径必须包含文件名,不能只是目录 - ❌ 错误: `python image_converter.py image input.png /path/to/directory` - ✅ 正确: `python image_converter.py image input.png /path/to/directory/output.py` ### 2. 创建文本图片 ```bash python image_converter.py text <文本内容> <输出文件路径> [选项] ``` **示例:** ```bash # 基本用法 python image_converter.py text "Hello World" output.py # 指定字体大小 python image_converter.py text "Hello" output.py --font-size 32 # 白底黑字 python image_converter.py text "Hello" output.py --invert ``` ### 3. 批量转换 ```bash python image_converter.py batch <输入目录> <输出目录> [选项] ``` **示例:** ```bash python image_converter.py batch ./input_images ./output_files --width 400 --height 300 ``` ## 参数说明 ### 通用参数 - `--width`: 目标宽度(默认400像素) - `--height`: 目标高度(默认300像素) - `--invert`: 反转颜色(黑底白字 → 白底黑字) - `--rotate`: 旋转90度 ### 图片转换专用 - `--no-dither`: 不使用抖动算法(使用简单阈值二值化) ### 文本创建专用 - `--font-size`: 字体大小(默认24) ## 在MicroPython中使用生成的文件 ```python # 导入生成的图片数据 from output import image_data # 在image.py中使用 import image image.run(image_data, width=400, height=300) ``` ## 验证修复 运行验证脚本检查生成的文件是否正确: ```bash python verify_fix.py ``` 这会比较修复前后的数据,确认没有错误的换行符。 ## 常见问题 ### Q: 为什么显示乱码? A: 如果使用旧版本转换器生成的文件,数据中包含错误的换行符。请使用修复后的转换器重新生成。 ### Q: 如何重新生成所有图片? A: 使用批量转换功能: ```bash python image_converter.py batch ./old_images ./new_images --width 400 --height 300 ``` ### Q: 支持哪些图片格式? A: 支持 JPG, PNG, BMP, GIF, TIFF 等常见格式。 ### Q: 生成的文件大小是多少? A: 对于400x300的图片,二进制数据大小为 15000 字节 (400 * 300 / 8)。 ## 技术细节 ### 数据格式 - 每个像素用1位表示(黑或白) - 每行需要 `(width + 7) // 8` 个字节 - 总字节数: `width_bytes * height` - 位顺序: MSB first (最高位在前) ### 正确的输出格式 ```python image_data = bytearray(b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' b'...') ``` ### 错误的输出格式(已修复) ```python # 不要使用这种格式! image_data = bytearray(b'\n\xFF\xFF\xFF\xFF...\n\xFF\xFF...') ```