108 lines
3.4 KiB
Python
108 lines
3.4 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
FLUX风格塑形API的Python客户端示例
|
|
"""
|
|
|
|
import requests
|
|
import argparse
|
|
import os
|
|
from datetime import datetime
|
|
|
|
def generate_image(server_url, prompt, structure_image_path, style_image_path, depth_strength=15.0, style_strength=0.5):
|
|
"""
|
|
调用API生成风格化图像
|
|
|
|
参数:
|
|
server_url (str): API服务器地址
|
|
prompt (str): 文本提示
|
|
structure_image_path (str): 结构图像的路径
|
|
style_image_path (str): 风格图像的路径
|
|
depth_strength (float): 深度强度
|
|
style_strength (float): 风格强度
|
|
|
|
返回:
|
|
str: 生成图像的保存路径
|
|
"""
|
|
# API端点
|
|
url = f"{server_url}/generate"
|
|
|
|
# 参数
|
|
data = {
|
|
"prompt": prompt,
|
|
"depth_strength": depth_strength,
|
|
"style_strength": style_strength
|
|
}
|
|
|
|
# 图像文件
|
|
files = {
|
|
"structure_image": open(structure_image_path, "rb"),
|
|
"style_image": open(style_image_path, "rb")
|
|
}
|
|
|
|
print(f"正在发送请求到 {url}...")
|
|
print(f"参数: 提示词='{prompt}', 深度强度={depth_strength}, 风格强度={style_strength}")
|
|
print(f"结构图像: {structure_image_path}")
|
|
print(f"风格图像: {style_image_path}")
|
|
|
|
try:
|
|
# 发送请求
|
|
response = requests.post(url, data=data, files=files)
|
|
|
|
# 检查响应
|
|
if response.status_code == 200:
|
|
# 生成输出文件名
|
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
output_filename = f"生成图像_{timestamp}.png"
|
|
|
|
# 保存生成的图像
|
|
with open(output_filename, "wb") as f:
|
|
f.write(response.content)
|
|
|
|
print(f"成功! 图像已保存到 {output_filename}")
|
|
return output_filename
|
|
else:
|
|
print(f"生成失败: {response.json()}")
|
|
return None
|
|
except Exception as e:
|
|
print(f"请求出错: {e}")
|
|
return None
|
|
finally:
|
|
# 关闭文件
|
|
for f in files.values():
|
|
f.close()
|
|
|
|
def main():
|
|
# 解析命令行参数
|
|
parser = argparse.ArgumentParser(description="FLUX风格塑形API客户端")
|
|
parser.add_argument("--server", default="http://localhost:8000", help="API服务器地址")
|
|
parser.add_argument("--prompt", default="", help="文本提示")
|
|
parser.add_argument("--structure", required=True, help="结构图像路径")
|
|
parser.add_argument("--style", required=True, help="风格图像路径")
|
|
parser.add_argument("--depth-strength", type=float, default=15.0, help="深度强度 (默认: 15.0)")
|
|
parser.add_argument("--style-strength", type=float, default=0.5, help="风格强度 (默认: 0.5)")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# 检查文件是否存在
|
|
if not os.path.exists(args.structure):
|
|
print(f"错误: 结构图像文件不存在 {args.structure}")
|
|
return
|
|
|
|
if not os.path.exists(args.style):
|
|
print(f"错误: 风格图像文件不存在 {args.style}")
|
|
return
|
|
|
|
# 调用API
|
|
generate_image(
|
|
server_url=args.server,
|
|
prompt=args.prompt,
|
|
structure_image_path=args.structure,
|
|
style_image_path=args.style,
|
|
depth_strength=args.depth_strength,
|
|
style_strength=args.style_strength
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
main() |