#pragma once #include #include #include #include #include #include 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