传输图片

传输图片

void MainWindow::sendData()
{
     QByteArray Data;
     QBuffer  buffer;
     buffer.open(QIODevice::ReadWrite);
     QDataStream out(&Data,QIODevice::ReadWrite); // out将数据写到(输入)到data中 <<
     displayImage();
     iMage->save(&buffer,"jpg");

     out.setVersion(QDataStream::Qt_5_8);//序列化格式设置版本号
     out<<(quint32)buffer.data().size();
     Data.append(buffer.data());

     this->qtcpsocket->open(QTcpSocket::ReadWrite);
     this->qtcpsocket->write(Data);


     Data.resize(0);
     buffer.reset(); //回收内存

}

void MainWindow:: displayImage()
{
    FILE *fp;
    char file[1024 * 10 * 10] = {0};
    char name[100] = {0};

    sprintf(name,"C:\\shiyan\\%d.jpg",count ++); //注意在windows下的绝对路径要这样写
    fp = fopen(name,"rb"); //可读写的二进制文件 fb是文件标识符(int)
    if(fp == NULL)
    {
        qDebug()<<"open failed ";
    }
    fread(&file,sizeof(file),1,fp);
    fclose(fp);
    qDebug()<<"count "<<count;

    if(count == 7) count = 1;
    iMage = new QImage((unsigned char *)file,0,0,QImage::Format_RGB16);
    bool isOk = iMage->loadFromData((unsigned char *)file,sizeof(file)); //给定二进制的第一个len加载图像
    qDebug()<<QString("isok: %1 ").arg(isOk);
    if (isOk)
    {

        ui->label->setScaledContents(true); //填充所有可用空间
        ui->label->setPixmap(QPixmap::fromImage(*iMage,Qt::AutoColor)); //制定的标志替换了PIXMAP的数据
    }

}

 

posted @ 2020-09-02 14:50  西北逍遥  阅读(246)  评论(0编辑  收藏  举报