main
HuangHai 4 months ago
parent 7e9128a3f1
commit 63bf9ec524

@ -1,44 +1,8 @@
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, model="wanx2.1-t2i-turbo", n=1, size='1024*1024'):
"""
根据提示词生成图片
:param prompt: 提示词
:param model: 使用的模型默认为 "wanx2.1-t2i-turbo"
:param n: 生成图片的数量默认为 1
:param size: 图片尺寸默认为 '1024*1024'
:return: (success, message) success True 表示成功False 表示失败message 为提示信息
"""
try:
print('----同步调用,请稍等----')
rsp = ImageSynthesis.call(api_key=MODEL_API_KEY, model=model, prompt=prompt, n=n, size=size)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
# 在当前目录下保存图片
for result in rsp.output.results:
file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
print(f"图片已生成,文件名: {file_name}")
return True, "图片生成成功"
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
from WxMini.Utils.ImageUtil import generate_image
# 示例调用
if __name__ == '__main__':
prompt = "哪吒闹海"
prompt = "武松打虎"
success, message = generate_image(prompt)
if not success:
print(f"生成失败: {message}")
print(f"生成失败: {message}")

@ -1,4 +1,51 @@
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import oss2
from WxMini.Milvus.Config.MulvusConfig import *
def generate_image(prompt, model="wanx2.1-t2i-turbo", n=1, size='1024*1024'):
# 初始化 OSS 客户端
auth = oss2.Auth(ACCESS_KEY_ID, ACCESS_KEY_SECRET)
bucket = oss2.Bucket(auth, ENDPOINT, BUCKET_NAME)
"""
根据提示词生成图片并直接上传到 OSS
:param prompt: 提示词
:param model: 使用的模型默认为 "wanx2.1-t2i-turbo"
:param n: 生成图片的数量默认为 1
:param size: 图片尺寸默认为 '1024*1024'
:return: (success, message) success True 表示成功False 表示失败message 为提示信息
"""
try:
rsp = ImageSynthesis.call(api_key=MODEL_API_KEY, model=model, prompt=prompt, n=n, size=size)
if rsp.status_code == HTTPStatus.OK:
# 遍历生成的图片
for result in rsp.output.results:
# 获取图片 URL
image_url = result.url
# 下载图片数据
image_data = requests.get(image_url).content
# 生成 OSS 文件名
file_name = PurePosixPath(unquote(urlparse(image_url).path)).parts[-1]
# 上传到 OSS
bucket.put_object('Upload/' + file_name, image_data)
print(f"图片已上传到 OSS文件名: Upload/{file_name}")
return True, "图片生成并上传成功"
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
# 获取图片的宽高

Loading…
Cancel
Save