You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.7 KiB
C++

#include "webClient.h"
#include <QJsonDocument>
#include <QJsonDocument>
#include <QFile>
#include <QDateTime>
#include <QApplication>
#include <QPixmap>
webClient::webClient(QObject *parent /*= Q_NULLPTR*/):
QObject(parent)
{
connect(&m_webSocket, &QWebSocket::connected, this, &webClient::onConnected);
connect(&m_webSocket, &QWebSocket::disconnected, this, &webClient::onDisConnected);
connect(&m_webSocket, &QWebSocket::textMessageReceived, this, &webClient::onTextMessageReceived);
connect(&m_webSocket, &QWebSocket::binaryMessageReceived, this, &webClient::onBinaryMessageReceived);
}
webClient::~webClient()
{
}
void webClient::openUrl(QString url)
{
m_webSocket.open(QUrl(url));
}
void webClient::onClose()
{
m_webSocket.close();
}
Q_SLOT void webClient::onConnected()
{
emit sgConnect(true);
}
Q_SLOT void webClient::onDisConnected()
{
emit sgConnect(false);
}
Q_SLOT void webClient::onTextMessageReceived(QString message)
{
emit sgRecvStrData(message);
}
Q_SLOT void webClient::onBinaryMessageReceived(const QByteArray &message)
{
emit sgRecvBinData(message);
}
void webClient::onSendJson(QJsonObject &obj)
{
QJsonDocument doc = QJsonDocument(obj);
QByteArray bData = doc.toJson();
m_webSocket.sendBinaryMessage(bData);
}
void webClient::sendSmallImage(QImage &img)
{
QJsonObject imageData;
imageData["width"] = img.width();
imageData["height"] = img.height();
imageData["format"] = img.format();
QByteArray imgData;
imgData.append((char*)img.bits(), img.byteCount());
imageData["data_base64"] = QString(imgData.toBase64());
imageData["image_data"] = 1;
onSendJson(imageData);
}
void webClient::parasImage(QJsonObject &imgData)
{
if (imgData.contains("image_data"))
{
QByteArray imgbase64;
if (imgData["data_base64"].isString())
{
imgbase64 = imgData["data_base64"].toString().toUtf8();
}
QByteArray imgArr = QByteArray::fromBase64(imgbase64);
QString imgPath = QApplication::applicationDirPath() + QString("/%1.jpg").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh_mm_ss zzz"));
QPixmap newImg;
newImg.loadFromData(imgArr);
newImg.save(imgPath);
int width = imgData["width"].toInt();
int height = imgData["height"].toInt();
int format = imgData["format"].toInt();
QImage::Format qfmt = static_cast<QImage::Format>(format);
QImage img((uchar *)imgArr.data(), width, height, qfmt);
}
}
void webClient::saveJson(QJsonObject obj)
{
QJsonDocument doc = QJsonDocument(obj);
QByteArray data = doc.toJson();
QString filePath = QApplication::applicationDirPath() + QString("/file%1.json").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh_mm_ss zzz"));
QFile file(filePath);
if (file.open(QIODevice::WriteOnly))
{
file.write(data);
file.close();
}
}