首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将QImage从QLocalServer传输到QLocalSocket

如何将QImage从QLocalServer传输到QLocalSocket
EN

Stack Overflow用户
提问于 2022-04-05 17:43:41
回答 1查看 92关注 0票数 0

我有两个mac应用程序,使用QLocalSocket相互通信。能够发送接收到的QString,但不能发送收到的QImage下面是我的代码。

服务器端代码

代码语言:javascript
复制
 QImage image(":/asset/logo_active.png");
 QByteArray ba;
 qDebug() << image.sizeInBytes() <<image.size();
 ba.append((char *)image.bits(),image.sizeInBytes());
 qDebug() <<ba.size(); //262144
 this->mSocket->write(ba);
 if(!this->mSocket->waitForBytesWritten(-1))
 {
     qDebug() << "writen Bytes error " << this->mSocket->errorString();
 }
 this->mSocket->flush();

客户端代码

代码语言:javascript
复制
    connect(mLocalSocket,&QLocalSocket::readyRead, [&]() {
        QByteArray ba;
        ba = mLocalSocket->readAll();
qDebug() << "size is" << ba.size(); // size is 0
        QImage image((uchar *)ba.data(),1024,768,QImage::Format_RGB32);
        ui->labelStream->setPixmap(QPixmap::fromImage(img));
    });

在发送方262144是字节数组大小,但在接收方,字节数组大小为0。

如果我错过了什么,请告诉我。

提前谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 06:40:41

最后,我得到了我使用的解决方案,下面的QDataStream是代码示例。

服务器端代码:

代码语言:javascript
复制
 QDataStream T(mSocket);
 T.setVersion(QDataStream::Qt_5_7);
 QByteArray ba;
 ba.append((char *)img.bits(),img.sizeInBytes());
 T << ba;
 mSocket->flush();

客户端代码

代码语言:javascript
复制
QByteArray jsonData;
QDataStream socketStream(mLocalSocket);
socketStream.setVersion(QDataStream::Qt_5_7);

for (;;) {
 socketStream.startTransaction();
 socketStream >> jsonData;
 if (socketStream.commitTransaction()) {
  QImage image((uchar *)jsonData.data(),640,480,QImage::Format_RGB888);
  ui->labelStream->setPixmap(QPixmap::fromImage(image));
 }else {
                  // the read failed, the socket goes automatically back to the state it was in before the transaction started
                  // we just exit the loop and wait for more data to become available
                  break;
  }
}

谢谢大家的支持,也谢谢大家的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71756200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档