Spaces:
Build error
Build error
import requests | |
import base64 | |
import time | |
class VirtualTryOnAPI: | |
def __init__(self, auth_token): | |
self.base_url = "https://api.klingai.com" | |
self.auth_token = auth_token | |
def create_task(self, human_image_path_or_base64, cloth_image_path_or_base64, | |
model_name="kolors - virtual - try - on - v1", callback_url=None): | |
headers = { | |
"Content-Type": "application/json", | |
"Authorization": self.auth_token | |
} | |
data = { | |
"model_name": model_name | |
} | |
if "http" in human_image_path_or_base64: | |
data["human_image"] = human_image_path_or_base64 | |
else: | |
if isinstance(human_image_path_or_base64, str) and human_image_path_or_base64.startswith("data:image"): | |
data["human_image"] = human_image_path_or_base64 | |
else: | |
with open(human_image_path_or_base64, "rb") as f: | |
img_data = f.read() | |
img_base64 = base64.b64encode(img_data).decode() | |
data["human_image"] = "data:image/png;base64," + img_base64 | |
if "http" in cloth_image_path_or_base64: | |
data["cloth_image"] = cloth_image_path_or_base64 | |
else: | |
if isinstance(cloth_image_path_or_base64, str) and cloth_image_path_or_base64.startswith("data:image"): | |
data["cloth_image"] = cloth_image_path_or_base64 | |
else: | |
with open(cloth_image_path_or_base64, "rb") as f: | |
img_data = f.read() | |
img_base64 = base64.b64encode(img_data).decode() | |
data["cloth_image"] = "data:image/png;base64," + img_base64 | |
if callback_url: | |
data["callback_url"] = callback_url | |
response = requests.post(self.base_url + "/v1/images/kolors - virtual - try - on", headers=headers, json=data) | |
return response.json() | |
def query_task(self, task_id): | |
headers = { | |
"Content-Type": "application/json", | |
"Authorization": self.auth_token | |
} | |
url = self.base_url + "/v1/images/kolors - virtual - try - on/" + task_id | |
response = requests.get(url, headers=headers) | |
return response.json() | |
if __name__ == "__main__": | |
# 假设你的鉴权信息 | |
auth_token = "c1748494bc5d42ed8db2b2d24ceb1a2b" | |
api = VirtualTryOnAPI(auth_token) | |
# 创建任务 | |
human_image_path = "model.jpg" | |
cloth_image_path = "cloth.jpeg" | |
task_result = api.create_task(human_image_path, cloth_image_path) | |
print("创建任务结果:", task_result) | |
task_id = task_result["data"]["task_id"] | |
# 查询任务直到完成 | |
while True: | |
query_result = api.query_task(task_id) | |
status = query_result["data"]["task_status"] | |
print("任务状态:", status) | |
if status == "succeed": | |
for image in query_result["data"]["task_result"]["images"]: | |
print("生成图片URL:", image["url"]) | |
break | |
elif status == "failed": | |
print("任务失败原因:", query_result["data"]["task_status_msg"]) | |
break | |
time.sleep(5) |