Files
QingLong/AI/WxMini/Test/T2_TuYa.py
2025-08-15 09:13:13 +08:00

63 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
from dashscope import ImageSynthesis
from WxMini.Milvus.Config.MulvusConfig import *
def generate_image(prompt, sketch_image_url, model="wanx-sketch-to-image-lite", task="image2image", n=1, size='768*768', style='<watercolor>'):
"""
根据提示词和草图生成图片
:param prompt: 提示词
:param sketch_image_url: 草图图片 URL
:param model: 使用的模型,默认为 "wanx-sketch-to-image-lite"
:param task: 任务类型,默认为 "image2image"
:param n: 生成图片的数量,默认为 1
:param size: 图片尺寸,默认为 '768*768'
:param style: 图片风格,默认为 '<watercolor>'
:return: (success, message) success 为 True 表示成功False 表示失败message 为提示信息
"""
try:
print('----同步调用,请稍等----')
rsp = ImageSynthesis.call(api_key=MODEL_API_KEY,
model=model,
prompt=prompt,
n=n,
style=style,
size=size,
sketch_image_url=sketch_image_url,
task=task)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
if rsp.output.task_status == "SUCCEEDED":
# 在当前目录下保存图片
for result in rsp.output.results:
file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
#with open('./%s' % file_name, 'wb+') as f:
# f.write(requests.get(result.url).content)
#print(f"图片已生成,文件名: {file_name}")
return True, "图片生成成功"
else:
# 生成失败,返回错误信息
error_message = f"生成失败,错误码: {rsp.output.code}, 错误信息: {rsp.output.message}"
print(error_message)
return False, error_message
else:
# 调用失败,返回错误信息
error_message = f"同步调用失败,状态码: {rsp.status_code}, 错误码: {rsp.code}, 错误信息: {rsp.message}"
print(error_message)
return False, error_message
except Exception as e:
# 捕获异常,返回错误信息
error_message = f"生成图片时发生异常: {str(e)}"
print(error_message)
return False, error_message
# 示例调用
if __name__ == '__main__':
prompt = "一棵参天大树"
sketch_image_url = "https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6609471071/p743851.jpg"
success, message = generate_image(prompt, sketch_image_url)
if not success:
print(f"生成失败: {message}")