mbd -> png 总结

markdown # 思路 正向一共有 4 个步骤: 1. rbg -> ch\_x 2. ch\_x -> re\_x 3. re\_x -> out\_5b(此步骤带实际尺寸偏移) 4. out_5b -> out(压缩数据密度) 反向同理: 1. out -> out_5b (width+shift) 2. out\_5b -> re\_x (width+shift) 3. re\_x -> ch\_x (width) 4. ch\_x -> rbg (width) 无需分析每一步的操作, 因为都是根据墨盒的喷墨口的排列顺序重新排列, 无实际意义, 只需根据程序逆向即可 # 遇到的问题 ## 内存错乱 用的过程中遇到内存错乱等问题, 原因是 反向第2步 的时候,当判断out_5b的数据不在画幅内时, 错误操作了re\_x之前的内存 错误语句和修改内容参见以下git信息: ``` static inline void load_1byte(uint8_t *buf, int l, int i, int shift, const uint8_t *f) { if (l < shift || l - shift >= img_width) - *(buf + (l - shift) * 36 + i) = 0; + ; else *(buf + (l - shift) * 36 + i) = *f; ``` ## 像素点偏移 发现 M Y 颜色的像素点有偏移, 原因是用mk的正向生成图片程序时, 加入了dpi等元素, 导致shift除了一个数字, 四舍五入后, M Y 的shift都少了1 解决方法是反向程序也引入同样的dpi补偿

评论