import inet.http;//导入此库 plus 控件支持图像网址 import win.ui; /*DSG{{*/ var winform = win.form(text="ModelScope 文生图(Qwen-Image)";right=800;bottom=600) winform.add( generateBtn={cls="button";text="生成图像";left=613;top=539;right=780;bottom=589;db=1;dr=1;z=2}; picturebox={cls="plus";left=20;top=20;right=780;bottom=491;db=1;dl=1;dr=1;dt=1;notify=1;repeat="scale";z=1}; progress={cls="plus";left=26;top=510;right=773;bottom=524;db=1;dl=1;dr=1;hide=1;z=4}; promptEdit={cls="edit";left=20;top=539;right=607;bottom=589;autohscroll=false;db=1;dl=1;dr=1;edge=1;multiline=1;z=3} ) /*}}*/ winform.progress.setProgressRange(1,100); winform.generateBtn.oncommand = function(){ var prompt = winform.promptEdit.text; if(!prompt) return winform.msgbox("请输入提示词"); winform.generateBtn.disabledText = {"✶";"✸";"✹";"✺";"✹";"✷"}; thread.invoke(function(winform, prompt){ import web.rest.jsonClient; // 创建 HTTP 客户端 var http = web.rest.jsonClient(); //设置认证 HTTP 头,请替换为自己的 API key。 http.setAuthToken('API_KEY');//请自行到 ModelScope 申请一个 Key //设置其他 HTTP 头 http.setHeaders({ "X-ModelScope-Async-Mode":"true", "X-ModelScope-Task-Type":"image_generation" }); //声明 HTTP API var ai = http.api("https://api-inference.modelscope.cn/v1"); //向服务器提交生成任务 var respData, err = ai.images.generations( model = "Qwen/Qwen-Image"; prompt = prompt; size = "1024x1024"; ); //获取任务 ID,直接下标 [[]] 操作符遇到 null 值返回 null 而不报错 var taskId = respData[["task_id"]]; if(taskId){ winform.progress.show(true); for(i=1;60){ // 最多尝试 60 次(5分钟) winform.progress.progressPos = 40 + i; thread.delay(5000); // 等待5秒 //查询任务执行结果 var result, err2 = ai.tasks[taskId].get(); err = err2; var status = result[["task_status"]]; if(status == "SUCCEED"){ var url = result.output_images[1]; winform.picturebox.background = url; //下载图像 http.receiveFile("/test.png").get(url); break } elseif(status == "FAILED"){ err = "FAILED" } if(err) break; } } if(err) winform.msgboxErr( err ); winform.generateBtn.disabledText = null; }, winform, prompt); }; winform.show(); win.loopMessage();