请求URL:https://api.shiliuai.com/api/inpaint/v1
请求方式:POST
请求参数-请求头(Header):
参数 | 类型 | 说明 |
---|---|---|
Content-Type | string | application/json |
APIKEY | string | 您的API KEY |
请求参数-请求内容(Body):
参数 | 类型 | 说明 |
---|---|---|
image_base64 | string, optional | base64编码的图片文件,必须提供image_base64或image_id其中一个, 图片文件要小于20M,图片的长边不能超过4096像素 |
image_id | string, optional | 图片id,对于已经请求过的图片,如果需要改变蒙版,可以使用id而无需再上传image_base64 |
mask_base64 | string, optional | base64编码的蒙版文件,必须提供mask_base64或rectangles其中一个, 蒙版图片为灰度图,黑色区域表示不需要修复,白色区域表示需要修复 |
rectangles | list, optional | 矩形区域,可以是多个,格式为[{"x1":x1, "y1":y1, "x2":x2, "y2"y2}] |
参数 | 说明 |
---|---|
code | 错误码 |
msg | 错误信息(英文) |
msg_cn | 错误信息(中文) |
result_base64 | 修复后的图片的base64编码,jpg格式,(当code==0时会有该返回值) |
image_id | 图片id,(当code==0时会有该返回值) |
错误码说明:
错误码 | 说明 |
---|---|
0 | 成功 |
1 | 图片错误 |
2 | 处理错误 |
3 | 服务器繁忙 |
4 | 参数错误,具体错误看msg或msg_cn |
5 | 未知错误 |
101 | API-KEY不正确 |
102 | 未知用户 |
103 | 积分已用完 |
104 | 扣除积分失败 |
Python 代码示例:
import requests import base64 import cv2 import json import numpy as np api_key = '******' # 你的API KEY image_path = '...' # 图片路径 mask_path = '...' # 蒙版路径 """ 第一次用image_base64请求,用mask_base64 """ with open(image_path, 'rb') as fp: image_base64 = base64.b64encode(fp.read()).decode('utf8') with open(mask_path, 'rb') as fp: mask_base64 = base64.b64encode(fp.read()).decode('utf8') url = 'https://api.shiliuai.com/api/inpaint/v1' headers = {'APIKEY': api_key, "Content-Type": "application/json"} data = { "image_base64": image_base64, "mask_base64": mask_base64 } response = requests.post(url=url, headers=headers, json=data) response = json.loads(response.content) """ 成功:{'code': 0, 'msg': 'OK', 'msg_cn': '成功', 'result_base64': result_base64, 'image_id': image_id} or 失败:{'code': error_code, 'msg': error_msg, 'msg_cn': 错误信息} """ image_id = response['image_id'] result_base64 = response['result_base64'] file_bytes = base64.b64decode(result_base64) f = open('result.jpg', 'wb') f.write(file_bytes) f.close() image = np.asarray(bytearray(file_bytes), dtype=np.uint8) image = cv2.imdecode(image, cv2.IMREAD_UNCHANGED) cv2.imshow('result', image) cv2.waitKey(0) """ 第二次用image_id请求,用rectangles参数 """ rectangles = [{'x1': 298, 'y1': 250, 'x2': 450, 'y2': 306}, {'x1': 616, 'y1': 519, 'x2': 732, 'y2': 560}] data = { "image_id": image_id, "rectangles": rectangles } response = requests.post(url=url, headers=headers, json=data)
PHP 代码示例:
$url = "https://api.shiliuai.com/api/inpaint/v1"; $method = "POST"; $apikey = "******"; $header = array(); array_push($header, "APIKEY:" . $apikey); array_push($header, "Content-Type:application/json"); $image_path = "..."; $handle = fopen($image_path, "r"); $image = fread($handle, filesize($image_path)); fclose($handle); $image_base64 = base64_encode($image); $mask_path = "..."; $handle = fopen($mask_path, "r"); $mask = fread($handle, filesize($mask_path)); fclose($handle); $mask_base64 = base64_encode($mask); $data = array( "image_base64"=> $image_base64, "mask_base64"=> $mask_base64 ); $post_data = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($curl); var_dump($response);