关于Qt Tcp传输图片数据图片显示不正常的问题,客户端截图保存到本地让后把图片数据发送给服务器端,但是服务器收到的图片不正常。变成最下面那样的效果,求帮忙看看。
客户端发送图片数据代码:
void TcpClientCore::Send_DisktopSnapshot(void)
{
QScreen* screen = QGuiApplication::primaryScreen();
if (screen == nullptr)
return;
QPixmap pixmap = screen->grabWindow(0);
if (pixmap.isNull())
return;
QString current_date_time = QDateTime::currentDateTime().toString("yyyyMMddhhmmsssss");
if (!pixmap.save(current_date_time + ".jpg", "jpg",50))
return;
QFile file(current_date_time + ".jpg");
if (!file.open(QIODevice::ReadOnly))
return;
int size = file.size();
int count = 0;
while (!file.atEnd())
{
QByteArray packetdata = file.readLine();
QByteArray Beat = SetDataPacket("Disktop", size, NULL, NULL, NULL, packetdata.toBase64(), packetdata.length()) + "&";
count = count + packetdata.length();
qDebug() << "ClientFileSize: " << count;
TcpSocket->write(Beat);
}
file.close();
}
服务器接收图片数据代码:
void ThreadCoreClass::ClientData(void)
{
//数据包解析
QByteArray packetData = TcpSocket->readAll();
QByteArrayList packetDataList = packetData.split('&');
qDebug() << packetDataList.count();
for (int index = 0; index < packetDataList.count(); index++)
{
QJsonDocument JsonDocument = QJsonDocument::fromJson(packetDataList.at(index));
if (JsonDocument.isObject())
{
QJsonObject HeaderPacketObj = JsonDocument.object();
QString command = HeaderPacketObj.value("command").toString();
if (command.compare("Disktop") == 0)
{
int ClienDataTotalSize = HeaderPacketObj.value("leng").toInt();
if (HeaderPacketObj.value("packet").isObject())
{
QJsonObject PacketObj = HeaderPacketObj.value("packet").toObject();
QString binaryData = PacketObj.value("binaryData").toString();
QByteArray array = QByteArray::fromBase64(binaryData.toLatin1());
if (!array.isNull())
{
DataSize += PacketObj.value("DataLeng").toInt();//数据总大小
total = total + binaryData.length();
qDebug() << "Total: " << total;
qDebug() << "DataSize: " << DataSize;
QFile file("abc.jpg");
file.open(QIODevice::WriteOnly | QIODevice::Append);
file.write(array);
file.close();
}
}
qDebug() << "ClientDataTotalSize: " << ClienDataTotalSize;
}
}
}
}
问题是客户端发送给服务器的图片变成以下的效果了?这是服务器把接收到的图片数据写入时编码的问题吗?我该怎么做图片才正常?