Files
hfut-bishe/client/core/net/ModelServerClient.h
T
2026-05-14 13:30:06 +08:00

72 lines
2.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
#include <QByteArray>
#include <QJsonArray>
#include <QObject>
#include <QString>
#include <QUrl>
#include <QNetworkReply>
class QNetworkAccessManager;
class QUrl;
class QNetworkReply;
namespace core {
class ModelServerClient final : public QObject {
Q_OBJECT
public:
explicit ModelServerClient(QObject* parent = nullptr);
void setBaseUrl(const QUrl& baseUrl);
QUrl baseUrl() const;
// 同步调用:向后端 POST /depth 发送背景图,成功返回 PNG(8-bit 灰度) 的二进制数据。
// timeoutMs<=0 表示使用默认超时(30s)。
bool computeDepthPng8(const QByteArray& imageBytes, QByteArray& outPngBytes, QString& outError, int timeoutMs = 30000);
// 异步调用:发起 POST /depth,返回 reply(由 Qt 管理生命周期;调用方负责连接 finished/错误处理)。
// 返回 nullptr 表示参数/URL 非法导致无法发起。
QNetworkReply* computeDepthPng8Async(const QByteArray& imageBytes, QString* outImmediateError = nullptr);
// POST /segment/sam_promptJSON 响应由调用方解析(success / contour / error)。
QNetworkReply* segmentSamPromptAsync(
const QByteArray& cropRgbPngBytes,
const QByteArray& overlayPngBytes,
const QJsonArray& pointCoords,
const QJsonArray& pointLabels,
const QJsonArray& boxXyxy,
QString* outImmediateError = nullptr);
// POST /inpaintJSON 响应由调用方解析(success / output_image_b64 / error / output_path)。
QNetworkReply* inpaintAsync(
const QByteArray& cropRgbPngBytes,
const QByteArray& maskPngBytes,
const QString& modelName,
const QString& prompt,
const QString& negativePrompt,
double strength,
int maxSide,
QString* outImmediateError = nullptr);
// POST /animate/character_sequenceJSON 响应由调用方解析(success / frames[] / fps / error)。
QNetworkReply* animateCharacterSequenceAsync(
const QByteArray& characterPngBytes,
const QString& prompt,
const QString& negativePrompt,
const QString& backgroundColor,
int backgroundTolerance,
int frameCount,
int numInferenceSteps,
double guidanceScale,
int maxSide,
int seed,
QString* outImmediateError = nullptr);
private:
QNetworkAccessManager* m_nam = nullptr;
QUrl m_baseUrl;
};
} // namespace core