From 63bf9ec5243cce8123dbbd684eb01c877a49ee58 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Fri, 28 Mar 2025 20:15:02 +0800 Subject: [PATCH] 'commit' --- AI/WxMini/Test/T1_GenerateTuPian.py | 42 ++-------------- AI/WxMini/Utils/ImageUtil.py | 47 ++++++++++++++++++ .../__pycache__/ImageUtil.cpython-310.pyc | Bin 3276 -> 1804 bytes 3 files changed, 50 insertions(+), 39 deletions(-) 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 ab06ac1023cfb50c4f486e13db83cc368b4bbb1c..acc5e99d0f4029a7a0ea3ec6ccdd65ae283ef5dc 100644 GIT binary patch literal 1804 zcmZWq-ER{|5Z~Q9pU>yBNhn__P`N^)n37N;o}zw*#8o56M{7qBr&QL(cd^eo-^Y!F-P7*Q%+Aj2&dhJm z&txhE}Gub z;J}%FKIruGfX?~b7<@cWoq22U>`5_HWZ`tDWndOD8G+6;(BxH}8?p+qzjSN{ zB3pz=3QzZum4x|Km{ph$gO<`t^S&@GbgfjFo+mS?h-Ac%EMLQ@rDL?R-_rQeP+!Hu z=Kr-7bP+P#(m&O~OFS>)MU+oZoVy>HNCh-6-gr4}zRnzjJHzhlkG|uWsG@uJi4W&whRg=C*FGZ(g~& zwRUwV7l=Hb%5C5K`q`sLT}jU_$;Kb;&8v@wavuaoLAv86KIP_D>zyy|f~52Gv(A$z zL%IBGk?b=zXvo6>uNj%)k&!~NSUz94SRNZSdUvtK!pO&klA)XnDhoC@)WXE*)a2Mi z$w;4@9ywnql_!SB3seDzkz6rd*T{@djutMIho{DbxhT!zdM{TXu9OHhGI>5y{D3zD z9wn*G0++K$0x(1>wJ!xW6KvIn#ftB7+v79=+o-5#Dxe$5O@Ky}0PJvPXke!7&(-Y; z2N88V4(9-0QLV&BjJe5eQ|jdrgV5W~6iv zXQUi~z%rcB(7L2$ax+TJJFZ>!%!VChY)XAve&G?@-y?b)tUf};!iMkK#SSJe6 z$sy81da#0zNGjHF7H5fy_hI!4`J0}A4HfYoyl5glqR03z0kLu{M1U;}IKkpA2yq*? zNJ!R58?_`Z0qOy>mehwg4b=42>sX+MO zi7#>5@#g(Vi|;w(SR!|qO*gQObS(PNcB(a=C)?|AFe;#xm+3)4AA%v0>r7-05}Q|y zq|>O1M9>3b3F?J4eUI4&sryl4F}AJLVtaA?yTcnow-+jEtWk~qcRij3G206Rf%s`y z#Xaz85K#rwGa$}ORE3GcF9cEXdgil{T;sgiEn^*y;W~2z@e>{wW?Z6CQdB1_bgNd} z!$?^stFemTv}2%90b1krZV?QOJMQIx4UG8Syi*+*4+Pg`;ylJj*>xFFRy4km`Zl~( Yfos1jG96z;M?Fv;DuE84ChI5u10$FY#Q*>R literal 3276 zcmai0>u(g-6~A+5c6RnDV!4fP9^(0e9NIG>FMj*p!8tVIN z+}$}8CU$xax6rAim2myO{kwMW9U0tzV0V7!;Nb3&k^G_kKixeHUA>+)$@7Jh<>&os zzS8g}oPvhomY*1Wah-#(9Pa@Xj?;jYNm(gVrZCFXKxG=vc2>i=ve+ywQWgiR;2ck@ zLxiRFkfz3Znvp=;N~Zf?k}ad8sRw#lWve!lvR00;R9zAKyIXdVpKWMHgD6`)u8QFx z`UX)*5DB6$lV-%%p}mK#IZYMfN9PRIds$J)#I^}@8=3C&V}TOTK)ne5;I)eN!MpaY zSZ6K@8HE{)5RLfp#xaF74TVhi_&R$gFfNi0=vxqJl)MQ(P2-q>o}JQBGLzKlb=Dgb>rjK z^%ILX&$KViE?vFex_z#7>U#U!_4etjtOhF1)Inx7mQXc=itv!yMYx-EUW{BG1?2euFChC?FY zOBQ;^WJ}l6#@G#;zoYzDIJ7T-13cQ99=3@{- zo_(m{(S|YDuFm1fT?^x1juys_)Ey^}dlNA z@GAIf|2A}bPkTTg(w^kswZ7F#FT94L!!N1C6>Wyzqw&p3kFrTIX6Qqag&_Z%Q2qhE zD+vYZWR^0WMFZ7Vm>~%TX+>dimXL&!l!TI6CX_S~3bZ^Xl%8cmNdln^NkUm}0Yd4O zgt7_sOg$!%IO|YmUchRlOHBpO+|bH4rlwS}8A3pY*)Wb6)Z zR7mefIfLmZ5?~IA9IgtaiS^gJ2_ zvv>i`b7;Pf265Oi87PHoz698EvTlQBZz~wUn1f7)&mRtvE3tFaJRs-l0dyewZ^jrw|{a=n&zV5 zkss%coN?Ilq-0EwzgexDmf)skmbg;`N-`~%nI%h99H3s)@;uw~E!WSQk30{8T9}Ma zatC5F^Kir5>DY&@!&b+|D^=?b1FpB-antj8Epxb$!EbhY6aKXy&DQJ>GH>k7ytMVl znIRXLyA<&H}Ty zKK#YP?Q;vaXQ8^ilOiiK1nzm=X|e&UGFMUp(J1id^nbEOW{8P?Po_>fE^u;UGa5PT zZ$K&3YXW4(7vI9>Z=*@0`3{=zqFIq=T|{27{L%=xcn84HnGS*LkYHNOpitAmJ_IU{ zQdL*92atsSg4#XWoBW%$p*sQpE3tncf)m&q=~mix)G9cBisz}2Dw~@8)6VSLg7vu8J^y_eJWG+ybSCBD601(c>(AL zoL0lQ6t7X6`K2&2X*qSCOUR}@+%A^F{Rd!bt7puJ@f)3hE&?Me}EJOUws zPF@Yr^C$a_g4;q*Q13HAW8Z#bSqPQBws{ upuj^AFQdU>yQVBrA&J*`1@gJ>@K^DyJY;->tfol{lU0q3@vQN~r1Brwetwbw