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; //数组清空 循环使用
}