QT网络通信数据流转图片

服务器发送ID和图片
void MsgSocket::slotImage(const QString &id, const QImage &image)
{
    QString l_id = id;

    m_msgType = MsgType_Image;
    QByteArray byteBuffer;
    QDataStream out(&byteBuffer, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_6);

    QBuffer buffer;					***
    buffer.open(QIODevice::ReadWrite);			***
    image.save(&buffer,"PNG");			***

    out << (quint16)0;
    out << m_msgType;
    out << l_id;
    out << buffer.data();				***
    out.device()->seek(0);
    out << (quint16)(buffer.size() - sizeof(quint16));

    qDebug() << byteBuffer.length();

    m_tcpSocket->write(byteBuffer);
}

客户端接ID和图片
///读取服务器发过来的socket
void MsgSocket::slotReadyRead()
{
    QDataStream in(m_tcpSocket);
    in.setVersion(QDataStream::Qt_4_6);

    if(m_tcpBlockSize == 0)
    {
        if(m_tcpSocket->bytesAvailable()<sizeof(quint16))
            return;

        in >> m_tcpBlockSize;
    }

    if(m_tcpSocket->bytesAvailable() < m_tcpBlockSize)
        return;

    QString id;
    in >> id;
    QImage image;						***
    QByteArray byteArray;					***
    in >> byteArray;						***
    image.loadFromData(byteArray);//这个就是存进去的QImage了	***
    if(image.isNull())
    {
        qDebug() << "NULL";
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值