57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
#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_prompt,JSON 响应由调用方解析(success / contour / error)。
|
||
QNetworkReply* segmentSamPromptAsync(
|
||
const QByteArray& cropRgbPngBytes,
|
||
const QByteArray& overlayPngBytes,
|
||
const QJsonArray& pointCoords,
|
||
const QJsonArray& pointLabels,
|
||
const QJsonArray& boxXyxy,
|
||
QString* outImmediateError = nullptr);
|
||
|
||
// POST /inpaint,JSON 响应由调用方解析(success / output_image_b64 / error / output_path)。
|
||
QNetworkReply* inpaintAsync(
|
||
const QByteArray& cropRgbPngBytes,
|
||
const QByteArray& maskPngBytes,
|
||
const QString& prompt,
|
||
const QString& negativePrompt,
|
||
double strength,
|
||
int maxSide,
|
||
QString* outImmediateError = nullptr);
|
||
|
||
private:
|
||
QNetworkAccessManager* m_nam = nullptr;
|
||
QUrl m_baseUrl;
|
||
};
|
||
|
||
} // namespace core
|
||
|