我使用Flatbuffers序列化一些数据,然后通过TCP通过网络发送。我可以在客户端应用程序中对其进行反序列化,但是我发送的某些图像数据存在问题。
我的flatbuffers架构定义如下:
namespace datapacket;
table FlatDataPacket {
id:string;
framedata:[ubyte];
}
root_type FlatDataPacket;
我将数据反序列化如下:
ByteBuffer bb = new ByteBuffer(buffer);
var flatDataPacket = FlatDataPacket.GetRootAsFlatDataPacket(bb);
现在,在flatDataPacket
中,我的Id
很好,但是我的imagedata
长度是8,当我尝试转换为图片时,我得到一个例外:
for (int i = 0; i < flatDataPacket.FramedataLength; i++)
{
incomingPacket.FrameBytes[i] = flatDataPacket.GetFramedata(i);
}
Image returnImage = Image.FromStream(new MemoryStream(incomingPacket.FrameBytes));//Throws exception
异常:
发生了'System.ArgumentException'类型的异常 System.Drawing.dll但未在用户代码中处理
附加信息:参数无效。
我做错了什么?如果我这样做没有flatbuffers并使用JSON或只发送图像数据,图像就会被发送和反序列化。我使用的数据类型ubyte
不正确吗?