Qwen-Image 参考图url如何解决?
import requests
import time
import json
from PIL import Image
from io import BytesIO
class mcQwenImage:
def init(self, api_key, base_url='https://api-inference.modelscope.cn/'):
self.base_url = base_url
self.api_key = api_key
self.common_headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
}
def generate_image(self, prompt, image_url, model='Qwen/Qwen-Image-Edit-2511', loras=None):
"""
调用图像生成 API
参数:
- prompt: 图像生成提示词
- image_url: 输入图像 URL 列表
- model: 使用的模型 ID,默认为 'Qwen/Qwen-Image-Edit-2511'
- loras: LoRA 配置,可选
返回:
- task_id: 生成任务 ID
"""
payload = {
"model": model,
"prompt": prompt,
"image_url": image_url
}
if loras:
payload["loras"] = loras
response = requests.post(
f"{self.base_url}v1/images/generations",
headers={**self.common_headers, "X-ModelScope-Async-Mode": "true"},
data=json.dumps(payload, ensure_ascii=False).encode('utf-8')
)
response.raise_for_status()
return response.json()["task_id"]
def get_task_status(self, task_id):
"""
查询任务状态
参数:
- task_id: 任务 ID
返回:
- 完整的任务状态响应
"""
result = requests.get(
f"{self.base_url}v1/tasks/{task_id}",
headers={**self.common_headers, "X-ModelScope-Task-Type": "image_generation"},
)
result.raise_for_status()
return result.json()
def wait_for_result(self, task_id, poll_interval=5):
"""
等待任务完成并返回结果
参数:
- task_id: 任务 ID
- poll_interval: 查询间隔(秒),默认为 5 秒
返回:
- 生成的图像对象(PIL.Image)
"""
while True:
data = self.get_task_status(task_id)
if data["task_status"] == "SUCCEED":
image_response = requests.get(data["output_images"][0])
image = Image.open(BytesIO(image_response.content))
return image
elif data["task_status"] == "FAILED":
raise Exception("Image Generation Failed.")
time.sleep(poll_interval)
def generate_and_get_image(self, prompt, image_url, model='Qwen/Qwen-Image-Edit-2511', loras=None, poll_interval=5):
"""
完整的图像生成流程:调用 API -> 等待结果 -> 返回图像
参数:
- prompt: 图像生成提示词
- image_url: 输入图像 URL 列表
- model: 使用的模型 ID
- loras: LoRA 配置,可选
- poll_interval: 查询间隔(秒)
返回:
- 生成的图像对象(PIL.Image)
"""
task_id = self.generate_image(prompt, image_url, model, loras)
return self.wait_for_result(task_id, poll_interval)
示例用法
if name == "main":
# 替换为你的 ModelScope Token
api_key = '换成你自己的 apikey'
# 创建实例
qwen_image = mcQwenImage(api_key)
picform = "十二宫格组成"
pictile = "3x4"
style = "二次元动漫风格"
picsize = "1024x1024"
description = f"""
第一张图,
"""
# 生成图像
prompt = f"""
这是一幅由{picform}的{pictile}的{sytle}风格作品,图片尺寸为{picsize},
{description}
"""
image_url = ["https://modelscope.oss-cn-beijing.aliyuncs.com/Dog.png"] # 找可以上传图像的url
try:
image = qwen_image.generate_and_get_image(prompt, image_url)
image.save("result_image.jpg")
print("图像生成成功,已保存为 result_image.jpg")
except Exception as e:
print(f"图像生成失败: {e}")



浙公网安备 33010602011771号