aardio 文档
aardio 范例: 造相 Z-Image - AI 图像生成
import win.ui;
import fonts.fontAwesome;
import inet.http;//导入 inet.http 则 plus 控件支持图像网址
/*DSG{{*/
var winform = win.form(text="造相 Z-Image - AI 图像生成";right=900;bottom=700;bgcolor=0xF5F5F5;border="none")
winform.add(
downloadBtn={cls="plus";text="下载图像";left=750;top=631;right=870;bottom=680;align="left";bgcolor=0x27AE60;border={radius=6};color=0xFFFFFF;db=1;disabled=1;dr=1;font=LOGFONT(h=-14;weight=600);iconStyle={align="left";font=LOGFONT(h=-14;name='FontAwesome');padding={left=17;top=1}};iconText='\uF019';notify=1;textPadding={left=37};z=9};
generateBtn={cls="plus";text="生成图像";left=750;top=565;right=870;bottom=614;align="left";bgcolor=0x3498DB;border={radius=6};color=0xFFFFFF;db=1;dr=1;font=LOGFONT(h=-15;weight=600);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome');padding={left=17;top=1}};iconText='\uF1FC';notify=1;textPadding={left=37};z=8};
picturebox={cls="plus";text="请在下方输入提示词生成图像";left=30;top=57;right=865;bottom=493;border={color=0xFFEEEEEE;radius=8;width=1};color=0x999999;db=1;dl=1;dr=1;dt=1;font=LOGFONT(h=-16);iconStyle={font=LOGFONT(h=-60;name='FontAwesome')};iconText='\uF03E';notify=1;repeat="scale";textPadding={top=100};z=2};
progressBar={cls="plus";left=30;top=511;right=865;bottom=521;bgcolor=0xECF0F1;border={radius=3};db=1;dl=1;dr=1;forecolor=0x3498DB;hide=1;z=5};
promptEdit={cls="edit";left=30;top=565;right=730;bottom=680;autohscroll=false;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;edge=1;multiline=1;vscroll=1;z=7};
promptLabel={cls="bkplus";text="提示词 (Prompt):";left=30;top=540;right=200;bottom=560;align="left";color=0x999999;db=1;dl=1;font=LOGFONT(h=-13;weight=600);z=6};
titleBar={cls="bkplus";left=0;top=0;right=900;bottom=46;bgcolor=0x2C3E50;dl=1;dr=1;dt=1;z=1};
titleIcon={cls="bkplus";text='\uF03E';left=225;top=5;right=265;bottom=41;color=0x3498DB;dl=1;dt=1;font=LOGFONT(h=-20;name='FontAwesome');z=4};
titleText={cls="bkplus";text="造相(Z-Image)文生图";left=20;top=11;right=225;bottom=31;color=0xFFFFFF;dl=1;dt=1;font=LOGFONT(h=-16;weight=700);z=3}
)
/*}}*/
// 点击事件
winform.generateBtn.oncommand = function(){
var prompt = winform.promptEdit.text;
if(!#string.trim(prompt)) {
winform.msgbox("请输入提示词","提示",0x30/*_MB_ICONWARNING*/);
return;
}
// 禁用按钮动画
winform.generateBtn.disabledText = ['\uF254','\uF251','\uF252','\uF253','\uF250']
winform.downloadBtn.disabled = true;
winform.progressBar.show(true);
winform.progressBar.progressPos = 0;
winform.picturebox.background = null;
winform.picturebox.iconText = '\uF03E';
thread.invoke(
function(winform, prompt){
import web.rest.jsonClient;
var http = web.rest.jsonClient();
// 请替换为自己的 API key。
http.setAuthToken('your_api_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");
winform.picturebox.text = "正在提交任务...";
var imageData, err = ai.images.generations(
model = "Tongyi-MAI/Z-Image-Turbo";
prompt = prompt;
size = "1080x1440";
);
//获取任务 ID
var taskId = imageData[["task_id"]];//直接下标 [[]] 遇 null 值返回 null
if(taskId){
winform.progressBar.progressPos = 10;
for(i=1;60){ // 尝试 60 次
var progress = 10 + (i * 1.5);
if(progress > 95) progress = 95;
winform.progressBar.progressPos = progress;
winform.picturebox.text = "生成中... " + string.format("%.0f%%", progress);
thread.delay(2000);
var result, err2 = ai.tasks[taskId].get();
err = err2;
var status = result[["task_status"]];
if(status == "SUCCEED"/*不能写成 "SUCCEEDED" */){
var imageUrl = result.output_images[1];//output_images 是 URL 数组,不要写错!!
winform.picturebox.background = imageUrl;
// 下载图像
// http.receiveFile("/generated_image.png").get(imageUrl);
winform.progressBar.progressPos = 100;
winform.picturebox.iconText = null;
winform.picturebox.text = null;
var url = result.output_images[1];
winform.downloadBtn.disabled = false;
break;
}
elseif(status == "FAILED"){
err = "生成失败"
}
if(err) break;
}
}
if(err) {
winform.msgboxErr(err, "错误");
winform.picturebox.text = "生成失败";
}
winform.generateBtn.disabledText = null;
thread.delay(2000);
winform.progressBar.hide = true;
}, winform, prompt);
};
winform.downloadBtn.oncommand = function(){
import fsys.dlg;
var savePath = fsys.dlg.save("PNG 图像|*.png|所有文件|*.*","保存图像","/","generated_image.png");
if(savePath){
winform.picturebox.background.save(savePath);
}
};
//设置边距(上,右,下,左)
winform.promptEdit.setPadding(5,5,5,5)
winform.promptEdit.text = `画一只猫。`;
winform.progressBar.setProgressRange(0,100);
winform.generateBtn.skin({
background={
default=0xFF3498DB;
hover=0xFF2980B9;
active=0xFF1F618D;
disabled=0xFFBDC3C7
};
color={
default=0xFFFFFFFF;
disabled=0xFF7F8C8D
}
});
winform.downloadBtn.skin({
background={
default=0xFF27AE60;
hover=0xFF229954;
active=0xFF1E8449;
disabled=0xFFBDC3C7
};
color={
default=0xFFFFFFFF;
disabled=0xFF7F8C8D
}
});
import win.ui.simpleWindow;
win.ui.simpleWindow(winform);
winform.show();
win.loopMessage();
Markdown 格式