图像对象和图像原始数据的内容有何不同

时间:2014-11-19 21:51:52

标签: c++ .net serialization udp c++-cli

我想通过UDP网络以1024字节大小的小包发送图像 我有两个选择。

imgBinaryFormatter->Serialize(memStream, objNewImage);        // Sending an image object
                         OR
imgBinaryFormatter->Serialize(memStream, objNewImage->RawData);    // Sending a raw data of image

他们的内容和使用时间有何不同?
供参考,完整功能如下:

Image^ objNewImage = Image::FromFile(fullPath);         // fullpath is full path of an image
MemoryStream^ memStream = gcnew MemoryStream();
Formatters::Binary::BinaryFormatter^ imgBinaryFormatter = gcnew Formatters::Binary::BinaryFormatter();          // Binary formatter
imgBinaryFormatter->Serialize(memStream, objNewImage);    // Or objNewImage->RawData ?? 
arrImgArray = memStream->ToArray();                                                                             // COnvert stream to byte array

int iNoOfPackets = arrImgArray->Length / 1024;
int i;

for (i = 1; i < iNoOfPackets; i++){
socket->SendTo(arrImgArray, 1024*(i-1), 1024, SocketFlags::None, receiversAdd);
}

int remainedBytes = arrImgArray->Length - 1024 * iNoOfPackets;

socket->SendTo(arrImgArray, 1024 * iNoOfPackets, remainedBytes, SocketFlags::None, receiversAdd);

如果您发现代码有所改进,请随意使用合适的内存约束应用解决方案编辑代码。

1 个答案:

答案 0 :(得分:0)

最好使用

Image.Save Method (Stream, ImageFormat)用于序列化为Stream

来自Stream

的反序列化Image.FromStream Method (Stream)

或其中一个重载