传输图片
传输图片
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的数据 } }
QQ 3087438119