lovart3/Real-ESRGAN_API_文档.md
Your Name 88ac9e2a46 添加备用变清晰API (Real-ESRGAN)
功能:
- 在系统设置中添加备用API配置选项
- 支持管理员切换使用主API或备用Real-ESRGAN API
- 备用API使用Base64方式发送图片
- 支持配置放大倍数(2x/4x/8x)和模型选择

Real-ESRGAN API特点:
- 基于深度学习的图像超分辨率模型
- 支持RealESRGAN_x2plus/x4plus/x8plus模型
- 支持动漫视频模型
- 处理时间1-10秒

后台切换对前端用户透明无感知
2026-01-04 15:50:38 +08:00

25 KiB
Raw Blame History

Real-ESRGAN API 接口文档

服务信息


认证方式

所有核心接口(/upscale/file、/upscale/base64 和 /upscale/url)需要在请求头中添加API密钥:

请求头:

X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw

注意: 以下端点无需API密钥:

  • GET / - 根端点(服务状态检查)
  • GET /health - 健康检查
  • GET /api-key-info - API密钥信息
  • GET /models - 支持的模型列表

接口列表

1. 根端点 - 服务状态检查

接口地址: GET /

描述: 检查服务是否正常运行

请求示例:

curl http://156.225.27.52:5233/

响应示例:

{
    "message": "Real-ESRGAN API 服务运行正常",
    "version": "1.0.0",
    "model": "RealESRGAN_x4plus",
    "scale": 4
}

2. 健康检查

接口地址: GET /health

描述: 检查服务健康状态和模型加载状态(无需API密钥)

请求示例:

curl http://156.225.27.52:5233/health

响应示例:

{
    "status": "healthy",
    "model_loaded": true,
    "model": "RealESRGAN_x4plus",
    "scale": 4,
    "device": "cuda"
}

3. API密钥信息

接口地址: GET /api-key-info

描述: 获取API密钥使用说明(无需API密钥)

请求示例:

curl http://156.225.27.52:5233/api-key-info

响应示例:

{
    "api_key_name": "X-API-Key",
    "description": "请在请求头中添加API密钥"
}

4. 支持的模型列表

接口地址: GET /models

描述: 获取所有支持的模型列表(无需API密钥)

请求示例:

curl http://156.225.27.52:5233/models

响应示例:

{
    "models": [
        {
            "name": "RealESRGAN_x2plus",
            "scale": 2,
            "description": "2倍放大模型"
        },
        {
            "name": "RealESRGAN_x4plus",
            "scale": 4,
            "description": "4倍放大模型(推荐)"
        },
        {
            "name": "RealESRGAN_x8plus",
            "scale": 8,
            "description": "8倍放大模型"
        },
        {
            "name": "RealESRGAN_animevideov3",
            "scale": 4,
            "description": "动漫视频模型"
        }
    ]
}

5. 文件上传方式放大图像

接口地址: POST /upscale/file

描述: 通过文件上传方式对图片进行超分辨率处理(需要API密钥)

Content-Type: multipart/form-data

请求头:

X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw

请求参数:

参数名 类型 必填 默认值 说明
file File 是 - 图片文件(支持常见图片格式)
scale int 否 4 放大倍数(2, 4, 8)
model_name string 否 RealESRGAN_x4plus 模型名称
tile int 否 0 分块大小(0=不使用分块,可根据显存调整)
half bool 否 false 是否使用FP16(降低显存需求)

请求示例 (cURL):

curl -X POST http://156.225.27.52:5233/upscale/file \
  -H "X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw" \
  -F "file=@/path/to/your/image.jpg" \
  -F "scale=4" \
  -F "model_name=RealESRGAN_x4plus"

请求示例 (Python):

import requests

url = "http://156.225.27.52:5233/upscale/file"
headers = {
    "X-API-Key": "realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw"
}
files = {"file": open("image.jpg", "rb")}
params = {
    "scale": 4,
    "model_name": "RealESRGAN_x4plus",
    "tile": 0,
    "half": False
}
response = requests.post(url, files=files, headers=headers, params=params)

# 保存结果
with open("result.png", "wb") as f:
    f.write(response.content)

print(f"处理时间: {response.headers.get('X-Processing-Time')} 秒")
print(f"放大倍数: {response.headers.get('X-Scale')}x")
print(f"使用模型: {response.headers.get('X-Model')}")

请求示例 (JavaScript/Node.js):

const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');

const form = new FormData();
form.append('file', fs.createReadStream('image.jpg'));
form.append('scale', '4');
form.append('model_name', 'RealESRGAN_x4plus');

axios.post('http://156.225.27.52:5233/upscale/file', form, {
  headers: {
    ...form.getHeaders(),
    'X-API-Key': 'realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw'
  },
  responseType: 'arraybuffer'
})
.then(response => {
  fs.writeFileSync('result.png', response.data);
  console.log('处理时间:', response.headers['x-processing-time'], '秒');
  console.log('放大倍数:', response.headers['x-scale'], 'x');
});

响应:

  • Content-Type: image/png
  • Body: PNG格式的图片二进制数据(超分辨率处理后的图片)
  • Headers:
    • X-Processing-Time: 处理时间(秒)
    • X-Scale: 放大倍数
    • X-Model: 使用的模型名称

错误响应:

{
    "detail": "Invalid API key"
}

(当API密钥无效或缺失时)


6. Base64方式放大图像

接口地址: POST /upscale/base64

描述: 通过Base64编码方式对图片进行超分辨率处理(需要API密钥)

Content-Type: application/json

请求头:

X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw

请求体:

{
    "image_base64": "base64编码的图片字符串",
    "scale": 4,
    "model_name": "RealESRGAN_x4plus"
}

请求参数:

参数名 类型 必填 默认值 说明
image_base64 string 是 - Base64编码的图片数据
scale int 否 4 放大倍数(2, 4, 8)
model_name string 否 RealESRGAN_x4plus 模型名称
tile int 否 0 分块大小(Query参数)
half bool 否 false 是否使用FP16(Query参数)

请求示例 (cURL):

curl -X POST http://156.225.27.52:5233/upscale/base64 \
  -H "X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw" \
  -H "Content-Type: application/json" \
  -d '{
    "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
    "scale": 4,
    "model_name": "RealESRGAN_x4plus"
  }'

请求示例 (Python):

import requests
import base64

# 读取图片并转换为base64
with open("image.jpg", "rb") as f:
    image_base64 = base64.b64encode(f.read()).decode("utf-8")

url = "http://156.225.27.52:5233/upscale/base64"
headers = {
    "X-API-Key": "realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw",
    "Content-Type": "application/json"
}
data = {
    "image_base64": image_base64,
    "scale": 4,
    "model_name": "RealESRGAN_x4plus"
}
params = {
    "tile": 0,
    "half": False
}
response = requests.post(url, json=data, headers=headers, params=params)

if response.status_code == 200:
    result = response.json()
    # 保存结果
    result_image = base64.b64decode(result["image_base64"])
    with open("result.png", "wb") as f:
        f.write(result_image)
    print(f"✅ 成功! 处理时间: {result['processing_time']:.2f}秒")

请求示例 (JavaScript/Node.js):

const fs = require('fs');
const axios = require('axios');

// 读取图片并转换为base64
const imageBuffer = fs.readFileSync('image.jpg');
const imageBase64 = imageBuffer.toString('base64');

axios.post('http://156.225.27.52:5233/upscale/base64', {
  image_base64: imageBase64,
  scale: 4,
  model_name: 'RealESRGAN_x4plus'
}, {
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw'
  },
  params: {
    tile: 0,
    half: false
  }
})
.then(response => {
  if (response.data.success) {
    const resultImage = Buffer.from(response.data.image_base64, 'base64');
    fs.writeFileSync('result.png', resultImage);
    console.log('处理时间:', response.data.processing_time, '秒');
  }
});

响应示例:

{
    "success": true,
    "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
    "processing_time": 2.345,
    "scale": 4,
    "model": "RealESRGAN_x4plus"
}

响应参数:

参数名 类型 说明
success boolean 是否成功
image_base64 string Base64编码的结果图片(PNG格式)
processing_time number 处理时间(秒)
scale int 放大倍数
model string 使用的模型名称

7. URL方式放大图像(上传到S3)

接口地址: POST /upscale/url

描述: 通过图片URL对图片进行超分辨率处理,处理后的图片自动上传到S3存储桶并返回URL(需要API密钥)

Content-Type: application/json

请求头:

X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw

请求体:

{
    "image_url": "https://example.com/image.jpg",
    "scale": 4,
    "model_name": "RealESRGAN_x4plus"
}

请求参数:

参数名 类型 必填 默认值 说明
image_url string 是 - 图片的URL地址
scale int 否 4 放大倍数(2, 4, 8)
model_name string 否 RealESRGAN_x4plus 模型名称
tile int 否 0 分块大小(Query参数)
half bool 否 false 是否使用FP16(Query参数)

请求示例 (cURL):

curl -X POST http://156.225.27.52:5233/upscale/url \
  -H "X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://example.com/image.jpg",
    "scale": 4,
    "model_name": "RealESRGAN_x4plus"
  }'

请求示例 (Python):

import requests

url = "http://156.225.27.52:5233/upscale/url"
headers = {
    "X-API-Key": "realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw",
    "Content-Type": "application/json"
}
data = {
    "image_url": "https://example.com/image.jpg",
    "scale": 4,
    "model_name": "RealESRGAN_x4plus"
}
params = {
    "tile": 0,
    "half": False
}
response = requests.post(url, json=data, headers=headers, params=params)

if response.status_code == 200:
    result = response.json()
    print(f"✅ 成功!")
    print(f"处理后的图片URL: {result['image_url']}")
    print(f"下载时间: {result['download_time']:.2f}秒")
    print(f"处理时间: {result['processing_time']:.2f}秒")
    print(f"上传时间: {result['upload_time']:.2f}秒")
    print(f"总时间: {result['total_time']:.2f}秒")

请求示例 (JavaScript/Node.js):

const axios = require('axios');

axios.post('http://156.225.27.52:5233/upscale/url', {
  image_url: 'https://example.com/image.jpg',
  scale: 4,
  model_name: 'RealESRGAN_x4plus'
}, {
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw'
  },
  params: {
    tile: 0,
    half: false
  }
})
.then(response => {
  if (response.data.success) {
    console.log('✅ 成功!');
    console.log('处理后的图片URL:', response.data.image_url);
    console.log('下载时间:', response.data.download_time, '秒');
    console.log('处理时间:', response.data.processing_time, '秒');
    console.log('上传时间:', response.data.upload_time, '秒');
    console.log('总时间:', response.data.total_time, '秒');
  }
})
.catch(error => {
  console.error('❌ 失败:', error.response?.data || error.message);
});

响应示例:

{
    "success": true,
    "image_url": "https://s3.1080p.hk/jsxiangche/realesrgan/20260104/abc123def456.png",
    "processing_time": 2.345,
    "download_time": 0.856,
    "upload_time": 0.234,
    "total_time": 3.435,
    "scale": 4,
    "model": "RealESRGAN_x4plus"
}

响应参数:

参数名 类型 说明
success boolean 是否成功
image_url string 处理后的图片在S3中的URL地址
processing_time number 图片处理时间(秒)
download_time number 图片下载时间(秒)
upload_time number 图片上传到S3的时间(秒)
total_time number 总耗时(秒)
scale int 放大倍数
model string 使用的模型名称

注意事项:

  • 此接口需要S3存储功能已启用(USE_S3_STORAGE=true)
  • 图片URL必须可公开访问
  • 支持的图片格式:JPG, PNG, JPEG等常见格式
  • 图片大小限制:最大50MB
  • 处理后的图片会自动上传到S3存储桶并返回可访问的URL

服务管理

Real-ESRGAN API服务通过systemd管理,支持自动启动和崩溃自动重启。

服务状态检查

# 查看服务状态
systemctl status realesrgan-api.service

# 查看服务日志
journalctl -u realesrgan-api.service -f

# 查看最近100行日志
journalctl -u realesrgan-api.service -n 100

服务控制命令

# 启动服务
systemctl start realesrgan-api.service

# 停止服务
systemctl stop realesrgan-api.service

# 重启服务
systemctl restart realesrgan-api.service

# 重新加载配置(无需重启)
systemctl reload realesrgan-api.service

# 查看服务状态
systemctl status realesrgan-api.service

自动启动配置

服务已配置为系统启动时自动启动,崩溃后自动重启:

  • 自动启动: 服务已启用(systemctl enable realesrgan-api.service)
  • 崩溃重启: Restart=always,服务崩溃后自动重启
  • 重启延迟: RestartSec=10,崩溃后等待10秒再重启
  • 重启策略: 服务异常退出时会自动重启,无需手动干预

服务配置

服务配置文件位置:/etc/systemd/system/realesrgan-api.service

主要配置项:

  • 工作目录: /root/realesrgan-api
  • 运行用户: root
  • GPU设备: CUDA_VISIBLE_DEVICES=1(使用GPU1)
  • S3存储: 已启用,环境变量已配置
  • 日志输出: 通过systemd journal管理

日志查看

# 实时查看日志
journalctl -u realesrgan-api.service -f

# 查看今天的日志
journalctl -u realesrgan-api.service --since today

# 查看最近的错误日志
journalctl -u realesrgan-api.service -p err -n 50

错误码说明

HTTP状态码 说明
200 请求成功
400 请求参数错误(如文件格式不支持、图片URL无效等)
401 未授权(API密钥无效或缺失)
422 请求参数验证失败
500 服务器内部错误(如处理失败、S3上传失败等)

注意事项

  1. 服务地址:

  2. API密钥认证:

    • 所有核心接口(/upscale/file、/upscale/base64 和 /upscale/url)都需要在请求头中添加 X-API-Key
    • API密钥:realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw
    • 健康检查、模型列表、API密钥信息等端点无需密钥
  3. 支持的图片格式: 所有常见图片格式(JPG, PNG, JPEG等)

  4. 输出格式: 所有接口返回PNG格式的图片

  5. 文件大小限制:

    • 上传文件:建议不超过50MB
    • URL方式:图片下载大小限制50MB
  6. 处理时间: 处理时间取决于图片大小和服务器负载,通常在1-10秒之间

  7. 放大倍数: 支持2x、4x、8x放大,根据模型而定

  8. 模型选择:

    • RealESRGAN_x4plus:推荐,4倍放大,适合大多数场景
    • RealESRGAN_x2plus:2倍放大,处理速度快
    • RealESRGAN_x8plus:8倍放大,需要更多显存
    • RealESRGAN_animevideov3:动漫视频模型,4倍放大
  9. S3存储功能:

    • /upscale/url 接口需要S3存储功能启用
    • S3配置可通过环境变量设置
    • 处理后的图片会自动上传到S3并返回可访问的URL
  10. CORS: 服务已配置CORS,支持跨域请求

  11. 服务管理:

    • 服务通过systemd管理,服务名称:realesrgan-api.service
    • 系统重启后服务会自动启动(已启用)
    • 服务崩溃后会在10秒内自动重启(Restart=always)
    • 日志通过systemd journal管理,使用 journalctl -u realesrgan-api.service 查看
    • 服务控制命令:systemctl start/stop/restart/status realesrgan-api.service

完整使用示例

Python完整示例

import requests
import base64
from pathlib import Path

API_KEY = "realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw"
BASE_URL = "http://156.225.27.52:5233"

# 方法1: 文件上传
def upscale_file(image_path):
    url = f"{BASE_URL}/upscale/file"
    headers = {"X-API-Key": API_KEY}
    
    with open(image_path, "rb") as f:
        files = {"file": f}
        params = {"scale": 4, "model_name": "RealESRGAN_x4plus"}
        response = requests.post(url, files=files, headers=headers, params=params)
    
    if response.status_code == 200:
        output_path = Path(image_path).stem + "_upscaled.png"
        with open(output_path, "wb") as f:
            f.write(response.content)
        print(f"✅ 成功! 结果已保存到: {output_path}")
        return output_path
    else:
        print(f"❌ 失败: {response.json()}")
        return None

# 方法2: Base64
def upscale_base64(image_path):
    url = f"{BASE_URL}/upscale/base64"
    headers = {
        "X-API-Key": API_KEY,
        "Content-Type": "application/json"
    }
    
    with open(image_path, "rb") as f:
        image_base64 = base64.b64encode(f.read()).decode("utf-8")
    
    data = {
        "image_base64": image_base64,
        "scale": 4,
        "model_name": "RealESRGAN_x4plus"
    }
    response = requests.post(url, json=data, headers=headers)
    
    if response.status_code == 200:
        result = response.json()
        result_image = base64.b64decode(result["image_base64"])
        output_path = Path(image_path).stem + "_upscaled.png"
        with open(output_path, "wb") as f:
            f.write(result_image)
        print(f"✅ 成功! 处理时间: {result['processing_time']:.2f}秒")
        return output_path
    else:
        print(f"❌ 失败: {response.json()}")
        return None

# 方法3: URL方式(上传到S3)
def upscale_url(image_url):
    url = f"{BASE_URL}/upscale/url"
    headers = {
        "X-API-Key": API_KEY,
        "Content-Type": "application/json"
    }
    
    data = {
        "image_url": image_url,
        "scale": 4,
        "model_name": "RealESRGAN_x4plus"
    }
    response = requests.post(url, json=data, headers=headers)
    
    if response.status_code == 200:
        result = response.json()
        print(f"✅ 成功!")
        print(f"处理后的图片URL: {result['image_url']}")
        print(f"总时间: {result['total_time']:.2f}秒")
        return result["image_url"]
    else:
        print(f"❌ 失败: {response.json()}")
        return None

# 使用示例
if __name__ == "__main__":
    image_path = "test_image.jpg"
    
    # 使用文件上传方式
    upscale_file(image_path)
    
    # 或使用Base64方式
    # upscale_base64(image_path)
    
    # 或使用URL方式
    # upscale_url("https://example.com/image.jpg")

JavaScript/Node.js完整示例

const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');
const path = require('path');

const API_KEY = 'realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw';
const BASE_URL = 'http://156.225.27.52:5233';

// 方法1: 文件上传
async function upscaleFile(imagePath) {
    const form = new FormData();
    form.append('file', fs.createReadStream(imagePath));
    form.append('scale', '4');
    form.append('model_name', 'RealESRGAN_x4plus');
    
    try {
        const response = await axios.post(`${BASE_URL}/upscale/file`, form, {
            headers: {
                ...form.getHeaders(),
                'X-API-Key': API_KEY
            },
            responseType: 'arraybuffer'
        });
        
        const outputPath = path.parse(imagePath).name + '_upscaled.png';
        fs.writeFileSync(outputPath, response.data);
        console.log(`✅ 成功! 结果已保存到: ${outputPath}`);
        return outputPath;
    } catch (error) {
        console.error('❌ 失败:', error.response?.data || error.message);
        return null;
    }
}

// 方法2: Base64
async function upscaleBase64(imagePath) {
    const imageBuffer = fs.readFileSync(imagePath);
    const imageBase64 = imageBuffer.toString('base64');
    
    try {
        const response = await axios.post(`${BASE_URL}/upscale/base64`, {
            image_base64: imageBase64,
            scale: 4,
            model_name: 'RealESRGAN_x4plus'
        }, {
            headers: {
                'Content-Type': 'application/json',
                'X-API-Key': API_KEY
            }
        });
        
        if (response.data.success) {
            const outputPath = path.parse(imagePath).name + '_upscaled.png';
            const resultImage = Buffer.from(response.data.image_base64, 'base64');
            fs.writeFileSync(outputPath, resultImage);
            console.log(`✅ 成功! 处理时间: ${response.data.processing_time.toFixed(2)}秒`);
            return outputPath;
        }
    } catch (error) {
        console.error('❌ 失败:', error.response?.data || error.message);
        return null;
    }
}

// 方法3: URL方式(上传到S3)
async function upscaleUrl(imageUrl) {
    try {
        const response = await axios.post(`${BASE_URL}/upscale/url`, {
            image_url: imageUrl,
            scale: 4,
            model_name: 'RealESRGAN_x4plus'
        }, {
            headers: {
                'Content-Type': 'application/json',
                'X-API-Key': API_KEY
            }
        });
        
        if (response.data.success) {
            console.log('✅ 成功!');
            console.log('处理后的图片URL:', response.data.image_url);
            console.log('总时间:', response.data.total_time.toFixed(2), '秒');
            return response.data.image_url;
        }
    } catch (error) {
        console.error('❌ 失败:', error.response?.data || error.message);
        return null;
    }
}

// 使用示例
(async () => {
    const imagePath = 'test_image.jpg';
    
    // 使用文件上传方式
    await upscaleFile(imagePath);
    
    // 或使用Base64方式
    // await upscaleBase64(imagePath);
    
    // 或使用URL方式
    // await upscaleUrl('https://example.com/image.jpg');
})();

交互式API文档

访问 http://156.225.27.52:5233/docs 可以在浏览器中查看交互式API文档(Swagger UI),支持在线测试接口。

注意: 在Swagger UI中测试需要API密钥的接口时,需要先点击右上角的"Authorize"按钮(如果有),或者直接在请求头中添加 X-API-Key。


API密钥

当前API密钥:

realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw

请求头格式:

X-API-Key: realesrgan_sk_live_MAPF4kLW5QinFz5BO96w-oVk09WnmvBZSyNDG8AxUgo7HGlqssJ4y1XZ38SyQsG9QCsYYOLcp9df6Ku1Jw78Pw

安全提示:

  • 请妥善保管API密钥,不要将其暴露在客户端代码中
  • 建议通过环境变量或配置文件管理API密钥

S3存储配置

如果使用 /upscale/url 接口,需要配置S3存储。配置方式如下:

环境变量:

USE_S3_STORAGE=true
MINIO_S3_ENDPOINT=s3.1080p.hk
MINIO_S3_USE_SSL=true
MINIO_S3_BUCKET=jsxiangche
MINIO_S3_ACCESS_KEY=AEvT1p0wSNjow3Asu9NV
MINIO_S3_SECRET_KEY=u8nzFl1S6dNoT5PQaQhkHz8Du6iX0hVnPswtvHhs
MINIO_S3_REGION=us-east-1

说明:

  • USE_S3_STORAGE: 必须设置为 true 才能启用S3上传功能
  • 处理后的图片会保存到S3存储桶中,路径格式:realesrgan/YYYYMMDD/UUID.png
  • 返回的URL可以直接访问和下载