通过套接字接收jpeg但无法在Qt

时间:2017-05-16 02:58:32

标签: c++ image qt sockets jpeg

我尝试从客户端套接字发送和接收jpeg图像(图像大小:1kb左右)。我通过检查数据大小成功发送和接收图像数据。但是,当我尝试将图像数据传递给QByteArray并在QImage上显示时,没有显示任何内容。下面的代码是接收和显示jpeg图像的片段。

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));

希望有人可以指导我。谢谢

2 个答案:

答案 0 :(得分:0)

在Windows上,您必须将imageformats目录复制到构建目录。

例如。 C:\Qt\5.7\msvc2015_64\plugins\imageformatsmy_build_dir\imageformats

答案 1 :(得分:0)

试试这段代码:

QPixmap scaledPixmap = QPixmap::fromImage(image).scaled(
                             QSize(imageWidth, imageHeight),
                             Qt::IgnoreAspectRatio, Qt::SmoothTransformation);

imageView->setScaledContents(false);
imageView->setPixmap(scaledPixmap);