QT 怎样使用socket传输图片?

1.向socket里发送图片代码

void Form::displayImage(int , QImage image)  //这里的image从接口传入
{
        QByteArray array1;    //定义字节数组
        QBuffer buffer(&array1);  //定义数组,指定父对象为字节数组
        buffer.open(QIODevice::WriteOnly);
        image.save(&buffer,"png"); //把图片保存到数组数组
        socket->write(array1);  //把字节数组写入套接字

}

2.读取socket里的图片代码

void MainWindow::onReadyRead()
{
    QByteArray imageData;
    QImage image;  //传输图片一般用QImage格式,能保证图片的完整性

    //尝试在waitForReadyRead()函数之前有数据过来,当执行wait函数时,会直接返回true。
    //在阻塞期间来数据,会返回true。
    //阻塞默认参数30000ms,超时返回false。
    while(socket->waitForReadyRead(100))
    {
        imageData.append((QByteArray)socket->readAll());
        //读取套接字内容存到字节数组
    }
    image.loadFromData(imageData);//把字数组的内容整合,转化为图片QImage形式
    ui->lable->setPixmap(QPixmap::fromImage(image)); //把图片转化为QPixmap格式显示在lable上

    imageData = 0;  //数组清空 循环使用
}
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值