我尝试从客户端套接字发送和接收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));
希望有人可以指导我。谢谢
答案 0 :(得分:0)
在Windows上,您必须将imageformats目录复制到构建目录。
例如。
C:\Qt\5.7\msvc2015_64\plugins\imageformats
至my_build_dir\imageformats
答案 1 :(得分:0)
试试这段代码:
QPixmap scaledPixmap = QPixmap::fromImage(image).scaled(
QSize(imageWidth, imageHeight),
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
imageView->setScaledContents(false);
imageView->setPixmap(scaledPixmap);