当前位置: 技术问答>linux和unix
接收图片失真,多了十几个16进制数,一直找到不原因,请各位高手帮帮忙~~~~急啊
来源: 互联网 发布时间:2016-04-10
本文导语: 这里先谢谢了!!!! 我用linux系统下c发送一副图片到windows,是写入内存然通过串口用无线传输模块发送的,接收端接收到的图片失真,只能看到大框,并且多了十几个字节, 比如回车0d,空格32等,不知道...
这里先谢谢了!!!!
我用linux系统下c发送一副图片到windows,是写入内存然通过串口用无线传输模块发送的,接收端接收到的图片失真,只能看到大框,并且多了十几个字节,
比如回车0d,空格32等,不知道为什么会出现这种错误,我在串口初始话的时候已经定义了原始数据流发送,为什么会多出这些字符呢??
恳请各位高手能给个思路!!!!
我用linux系统下c发送一副图片到windows,是写入内存然通过串口用无线传输模块发送的,接收端接收到的图片失真,只能看到大框,并且多了十几个字节,
比如回车0d,空格32等,不知道为什么会出现这种错误,我在串口初始话的时候已经定义了原始数据流发送,为什么会多出这些字符呢??
恳请各位高手能给个思路!!!!
|
出现这个问题有很多可能,你应该一步一步排查,比如在数据发送前和接受到后立刻对比数据,观察是不是发送的原因。
我觉得图片本身出问题的可能性更大,即图片数据本身就是错。
曾经做过一个项目是用TCP传图片。当时图片传过去也变得乱七八糟,后来确定是这么个问题:BMP格式中一行数据必须对齐到4字节的边界上,比如24位位图,每行有三个点,那么数据格式如下:
[B1] [G1] [R1] [B2] [G2] [R2] [B3] [G3] [R3] [00] [00] [00]
[B1] [G1] [R1] [B2] [G2] [R2] [B3] [G3] [R3] [00] [00] [00]
[B1] [G1] [R1] [B2] [G2] [R2] [B3] [G3] [R3] [00] [00] [00]
每行最后的三个[00]是填充数据,使每一行都是4字节的整数倍。
我觉得图片本身出问题的可能性更大,即图片数据本身就是错。
曾经做过一个项目是用TCP传图片。当时图片传过去也变得乱七八糟,后来确定是这么个问题:BMP格式中一行数据必须对齐到4字节的边界上,比如24位位图,每行有三个点,那么数据格式如下:
[B1] [G1] [R1] [B2] [G2] [R2] [B3] [G3] [R3] [00] [00] [00]
[B1] [G1] [R1] [B2] [G2] [R2] [B3] [G3] [R3] [00] [00] [00]
[B1] [G1] [R1] [B2] [G2] [R2] [B3] [G3] [R3] [00] [00] [00]
每行最后的三个[00]是填充数据,使每一行都是4字节的整数倍。