关于Qt Tcp传输图片数据图片显示不正常的问题.

关于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;
            }
        }
    }
}

问题是客户端发送给服务器的图片变成以下的效果了?这是服务器把接收到的图片数据写入时编码的问题吗?我该怎么做图片才正常?

img