新增模型补全空洞
This commit is contained in:
@@ -87,6 +87,47 @@ QNetworkReply* ModelServerClient::segmentSamPromptAsync(
|
||||
return m_nam->post(req, body);
|
||||
}
|
||||
|
||||
QNetworkReply* ModelServerClient::inpaintAsync(
|
||||
const QByteArray& cropRgbPngBytes,
|
||||
const QByteArray& maskPngBytes,
|
||||
const QString& prompt,
|
||||
const QString& negativePrompt,
|
||||
double strength,
|
||||
int maxSide,
|
||||
QString* outImmediateError
|
||||
) {
|
||||
if (outImmediateError) {
|
||||
outImmediateError->clear();
|
||||
}
|
||||
if (!m_baseUrl.isValid() || m_baseUrl.isEmpty()) {
|
||||
if (outImmediateError) *outImmediateError = QStringLiteral("后端地址无效。");
|
||||
return nullptr;
|
||||
}
|
||||
if (cropRgbPngBytes.isEmpty()) {
|
||||
if (outImmediateError) *outImmediateError = QStringLiteral("裁剪图像为空。");
|
||||
return nullptr;
|
||||
}
|
||||
if (maskPngBytes.isEmpty()) {
|
||||
if (outImmediateError) *outImmediateError = QStringLiteral("Mask 为空。");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const QUrl url = m_baseUrl.resolved(QUrl(QStringLiteral("/inpaint")));
|
||||
QNetworkRequest req(url);
|
||||
req.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));
|
||||
|
||||
QJsonObject payload;
|
||||
payload.insert(QStringLiteral("image_b64"), QString::fromLatin1(cropRgbPngBytes.toBase64()));
|
||||
payload.insert(QStringLiteral("mask_b64"), QString::fromLatin1(maskPngBytes.toBase64()));
|
||||
payload.insert(QStringLiteral("prompt"), prompt);
|
||||
payload.insert(QStringLiteral("negative_prompt"), negativePrompt);
|
||||
payload.insert(QStringLiteral("strength"), strength);
|
||||
payload.insert(QStringLiteral("max_side"), maxSide);
|
||||
|
||||
const QByteArray body = QJsonDocument(payload).toJson(QJsonDocument::Compact);
|
||||
return m_nam->post(req, body);
|
||||
}
|
||||
|
||||
bool ModelServerClient::computeDepthPng8(
|
||||
const QByteArray& imageBytes,
|
||||
QByteArray& outPngBytes,
|
||||
|
||||
@@ -37,6 +37,16 @@ public:
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user