云开发 AI 提供基于混元大模型的文生图与图生图能力,通过文本描述(图生图另需一张垫图)即可生成高质量图片。图片生成支持小程序端与云函数端两种调用方式。
注意: 小程序端从基础库
3.17.4起支持直接调用,使用wx.cloud.extend.AI.createImageModel();云函数端使用cloud.ai().createImageModel()。小程序端的完整参数说明见 wx.cloud.extend.AI。
支持的模型
| 模型名称 | 说明 | 可用状态 |
|---|---|---|
HY-Image-3.0-Plus-4090-Tob-v1.0 |
混元文生图 v3.0,输入文本生成图片,支持自定义尺寸、prompt 改写 | 2026 年 12 月 1 日下线 |
HY-Image-v3.0-I2I-ToB-v1.0.1 |
混元图生图 v3.0,基于垫图与文本生成图片,需传入 image_urls 或 images |
2026 年 12 月 1 日下线 |
模型下线预告:
HY-Image-3.0-Plus-4090-Tob-v1.0(文生图)与HY-Image-v3.0-I2I-ToB-v1.0.1(图生图)将于 2026 年 12 月 1 日 0 点下线,下线后调用会报错。接替模型hy-image-v3.5-preview预计 2026 年 11 月中旬提供,调用方式与当前模型不同,具体改造点另行通知。请评估工作量并预留适配时间。详见《关于混元生图 3.0 模型下线的通知》。
支持的尺寸
| 尺寸 | 比例 | 说明 |
|---|---|---|
1024x1024 |
1:1 | 正方形(默认) |
1280x720 |
16:9 | 横向宽屏 |
720x1280 |
9:16 | 纵向竖屏 |
宽 × 高不能超过 1024 × 1024 像素,超出会返回 400 错误。
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 模型名称。文生图使用 HY-Image-3.0-Plus-4090-Tob-v1.0,图生图使用 HY-Image-v3.0-I2I-ToB-v1.0.1 |
prompt |
string | 是 | 图片描述文本,最多 500 字 |
size |
string | 否 | 图片尺寸,默认 1024x1024,可选值见上表 |
revise |
{ value: boolean } |
否 | 是否开启 prompt 改写,开启后模型会自动优化提示词以提升生图效果 |
image_urls |
string[] |
否 | 图生图垫图图片地址列表,与 images 二选一。最多 1 张,单张不超过 10MB,支持 jpg、jpeg、png |
images |
string[] |
否 | 图生图垫图 base64 列表,与 image_urls 二选一。最多 1 张,单张不超过 10MB。传纯 base64 字符串,不要带 data:image/jpeg;base64, 前缀,否则返回 400 错误(image validate failed) |
使用方式
小程序端直接调用
小程序端从基础库 3.17.4 起支持直接调用生图模型,无需经过云函数中转:
// 基础库 3.17.4 及以上
wx.cloud.init({
env: "<你的环境ID>",
});
const imageModel = wx.cloud.extend.AI.createImageModel("hunyuan-image");
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt: "一只胖胖的橘猫坐在窗台上打盹,水彩风格,温暖色调",
size: "1024x1024",
revise: {value: true},
timeout: 120000, // 生图耗时较长,超时时间需给足
});
console.log(res.data[0].url);
图生图只需将 model 换成 HY-Image-v3.0-I2I-ToB-v1.0.1,并通过 image_urls(图片地址)或 images(base64)传入一张垫图,其余参数不变。完整示例见 wx.cloud.extend.AI。
云函数端调用
第 1 步:创建云函数
在云函数中使用 wx-server-sdk 调用生图模型:
// 云函数 generateImage/index.js
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
timeout: 150000, // HTTP 请求超时 150s,覆盖默认的 ~15s
});
const ALLOWED_SIZES = ["1024x1024", "1280x720", "720x1280"];
exports.main = async (event, context) => {
const prompt = (event.prompt || "").trim();
if (!prompt) {
return {error: "请输入提示词"};
}
if (prompt.length > 500) {
return {error: "提示词最多 500 字"};
}
const size = ALLOWED_SIZES.includes(event.size) ? event.size : "1024x1024";
const imageModel = cloud.ai().createImageModel("hunyuan-image");
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt,
size,
revise: {value: true},
});
return {
url: res.data[0].url, // 图片 URL,24 小时有效
revisedPrompt: res.data[0].revised_prompt, // 优化后的提示词
};
};
云函数的
package.json中需要指定wx-server-sdk版本 ≥ 3.0.5-beta.1。
第 2 步:在小程序中调用
Page({
data: {
imageUrl: "",
isLoading: false,
},
async generateImage() {
this.setData({isLoading: true, imageUrl: ""});
try {
const res = await wx.cloud.callFunction({
name: "generateImage",
data: {
prompt: "一只胖胖的橘猫坐在窗台上打盹,水彩风格,温暖色调",
size: "1024x1024",
},
});
if (res.result.error) {
wx.showToast({title: res.result.error, icon: "none"});
return;
}
this.setData({imageUrl: res.result.url});
} catch (error) {
console.error("生成失败:", error);
wx.showToast({title: "生成失败", icon: "error"});
} finally {
this.setData({isLoading: false});
}
},
});
对应的 WXML:
<view class="container">
<image wx:if="{{imageUrl}}" src="{{imageUrl}}" mode="aspectFit" class="result-image"/>
<button bindtap="generateImage" disabled="{{isLoading}}">
{{isLoading ? '生成中...' : '生成图片'}}
</button>
</view>
保存图片到云存储
生成的图片 URL 24 小时后失效。如需永久保存,可在云函数中直接下载并上传到云存储:
const https = require("https");
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
timeout: 150000,
});
exports.main = async (event, context) => {
const prompt = (event.prompt || "").trim();
const imageModel = cloud.ai().createImageModel("hunyuan-image");
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt,
revise: {value: true},
});
// 下载图片并上传到云存储
const imageBuffer = await downloadImage(res.data[0].url);
const uploadRes = await cloud.uploadFile({
cloudPath: `ai-images/${Date.now()}.jpg`,
fileContent: imageBuffer,
});
return {
fileID: uploadRes.fileID, // 永久有效的云存储链接
revisedPrompt: res.data[0].revised_prompt,
};
};
function downloadImage(url) {
return new Promise((resolve, reject) => {
https.get(url, (response) => {
const chunks = [];
response.on("data", (chunk) => chunks.push(chunk));
response.on("end", () => resolve(Buffer.concat(chunks)));
response.on("error", reject);
});
});
}
使用限制
- 小程序端直接调用需基础库
3.17.4及以上;低于该版本时,需通过wx.cloud.callFunction()调用云函数中转 - 生成的图片 URL 24 小时后失效,如需永久保存请上传至云存储
- prompt 最长 500 字
- 建议将云函数超时时间设置为 900 秒
提升生图质量
- 开启
revise:让模型优化你的 prompt,通常能显著提升效果 - 编写详细的 prompt:包含风格、色调、构图、光线等具体描述