【发布时间】:2017-10-14 23:07:35
【问题描述】:
我试图从我的客户端套接字发送和接收 jpeg 图像(图像大小:1kb 左右)。通过检查数据的大小,我已成功发送和接收图像数据。但是,当我尝试将图像数据传递到 QByteArray 并在 QImage 上显示时,什么都没有显示。下面的代码是接收和显示jpeg图片的sn-p。
Server.cpp
memcpy(&Rbuffer, ptr, msgCtl.iMsgLen - 8);
ptr += msgCtl.iMsgLen - 8;
cout << "Size of the image data recieve from the send buffer is " << sizeof(Rbuffer) << endl;
QByteArray ba = QByteArray::fromRawData(Rbuffer, sizeof(Rbuffer));
QBuffer qbuff(&ba);
qbuff.open(QIODevice::ReadOnly);
//QImageReader qimg ("C:\\test.jpg");
QImageReader qimg (&qbuff,"JPG");
qimg.setDecideFormatFromContent(true);
qimg.setDevice(&qbuff);
QImage img = qimg.read();
if (!img.isNull()){
cout << "no problem" << endl;
}
imageView->setPixmap(QPixmap::fromImage(img));
希望有人可以指导我。谢谢
【问题讨论】:
-
RBuffer应该表示什么?您知道sizeof()是一个编译时值,并且不知道在运行时确定的大小吗? -
RBuffer 是接收器应该接收的图像数据。我认为通过使用 sizeof() 在发送方和接收方之间进行比较检查,以确保发送和接收都具有相同的数据大小。你介意指导我如何去做吗?