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补偿
评论
发表评论