diff --git a/AI/WxMini/Test/T1_GenerateTuPian.py b/AI/WxMini/Test/T1_GenerateTuPian.py index fba6c4da..986e2c9f 100644 --- a/AI/WxMini/Test/T1_GenerateTuPian.py +++ b/AI/WxMini/Test/T1_GenerateTuPian.py @@ -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}") \ No newline at end of file + print(f"生成失败: {message}") diff --git a/AI/WxMini/Utils/ImageUtil.py b/AI/WxMini/Utils/ImageUtil.py index 6d23b304..5eb10090 100644 --- a/AI/WxMini/Utils/ImageUtil.py +++ b/AI/WxMini/Utils/ImageUtil.py @@ -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 # 获取图片的宽高 diff --git a/AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc b/AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc index ab06ac10..acc5e99d 100644 Binary files a/AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc and b/AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc differ