# aardio 范例: ModelScope 文生图（Qwen-Image）



```aardio
//相关范例：Z-Image 文生图 https://www.aardio.com/zh-cn/docs/examples/AI/image/modelscope-z-image.html
import inet.http;//界面线程导入 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=610;top=536;right=777;bottom=586;db=1;dr=1;z=2};
picturebox={cls="plus";left=20;top=20;right=780;bottom=452;db=1;dl=1;dr=1;dt=1;notify=1;repeat="scale";z=1};
progress={cls="plus";left=19;top=447;right=766;bottom=461;db=1;dl=1;dr=1;hide=1;z=4};
promptEdit={cls="edit";left=20;top=463;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('your_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 imageData, err = ai.images.generations(
				model = "Qwen/Qwen-Image-2512";
				prompt = prompt;
				size = "1080x1440";// 3:4 图像
			);
			
			//获取任务 ID，直接下标 [[]] 操作符遇到 null 值返回 null 而不报错
			var taskId = imageData[["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.promptEdit.text = `科技感蓝色渐变背景，中央悬浮渐变色立体文字‘aardio’，使用霓虹外发光效果，立体文字是一个由智能水晶方块组成的神秘编程机器人，文字下方呈现半透明全息界面展示，两侧有动态数据粒子环绕。一个可爱的小孩站在立体字 ‘aardio’ 前面，正在用手指操作立体字 ‘aardio’，脸上充满好奇。主色调建议科技蓝/星际紫渐变，画面整体搭配柔光滤镜与光斑特效，辅助元素为流动的数据粒子/全息界面，有一些 AI 小机器人在画面四处或立或坐或者玩耍或工作。整体营造未来科技感与神秘氛围。所有文字避开上下 250 像素安全区。`;

winform.show();
win.loopMessage();
```

