文本生成图像

通义万相-文本生成图像模型具备两项核心能力:一是直接根据文本生成图像;二是结合文本描述和提供的参考图像,它能生成与参考图像内容或风格相似的新图像。

基本介绍

通义万相-文本生成图像模型是通义团队基于自主研发的Composer组合生成框架构建的AI绘画创作大模型。它通过结合用户输入的文本描述和提供的参考图像,能够生成语义准确且风格多样的图像,为用户提供强大的创意绘画能力。

您可以通过中英文描述生成多种风格的图像,比如使用中国古代诗词描述生成插画风格的图像。您还可以在一张参考图像上进行二次创作,比如将参考图像的风格调整为其他类型,或者延续参考图像风格,结合文本描述生成内容更丰富的图像。

image

特色优势

  • 知识重组&可变维扩散模型:基于自研的Composer组合生成框架的AI绘画创作大模型,通过知识重组与可变维度扩散模型,生成符合语义描述的多样化风格的图像。

  • 效果业界领先:生成图像语义一致性更精准,AI绘画创作布局自然、细节丰富、画面细腻、结果逼真。

使用场景

  • 艺术与设计创作:生成概念草图、插画、海报、包装设计、甚至数字艺术品。

  • 广告与营销物料生成:即时响应广告文案,生成符合品牌调性、产品特性和营销策略的视觉内容。

  • 教育与培训资源制作:创建生动、直观的教学素材,定制化的图像资源还能用于制作互动课件、电子教科书,丰富教育资源库。

  • 新闻与媒体内容生产:增强新闻的视觉呈现,确保新闻报道的时效性和准确性。

  • 游戏与娱乐内容开发:快速生成游戏内的角色、道具、环境元素等美术资源,动态生成游戏NPC外观或定制化的玩家角色。

  • 图书封面与插图生成:生成与书籍主题契合的封面设计和内页插图。

模型概览

模型简介

模型名称

模型简介

wanx-v1

通义万相-文本生成图像大模型。

  • 支持中英文双语输入。

  • 支持多种图像风格。

  • 支持输入参考图片,进行内容或风格迁移,实现更加丰富的风格、主题及派别。

模型说明

模型名称

免费额度

计费单价

限流(主账号与RAM子账号共用)

任务下发接口QPS限制

同时处理任务数量

wanx-v1

免费额度:500

有效期:180

0.16元/张

2

1

更多说明请查看模型使用及计费说明

关键能力

本章节主要介绍通义万相-文生图模型的关键参数使用及效果展示。接口调用和参数详细说明请前往文本生成图像API参考

文生图模型提供两个核心功能:

  • 基础文生图:根据输入文本生成图像。

  • 相似图生成:根据输入文本和参考图像,生成相似图。

上述两个核心功能的通用关键参数包括:

  • style:图像风格。默认值为<auto>

    style枚举值

    • <auto>:默认值,由模型决定输出的图像风格。

    • <photography>:摄影。

    • <portrait>:人像写真。

    • <3d cartoon>:3D卡通。

    • <anime>:动画。

    • <oil painting>:油画。

    • <watercolor>:水彩。

    • <sketch>:素描。

    • <chinese painting>:中国画。

    • <flat illustration>:扁平插画。

  • prompt:正向提示词。支持中英文,长度不超过500个字符,超过部分会自动截断。

  • negative_prompt:反向提示词。支持中英文,长度不超过500个字符,超过部分会自动截断。

相似图生成的关键参数包括:

  • ref_strength:控制输出图像与参考图(垫图)的相似度。取值范围为[0.0, 1.0]。取值越大,代表生成的图像与参考图越相似。

  • ref_mode:基于参考图(垫图)生成图像的方式。取值有:repaint代表参考内容,为默认值;refonly代表参考风格。

前提条件

您需要已获取API Key配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK

设置图像风格

您可以调整style参数来生成不同风格的图像。最佳图像通常需要经过多次调试,请您耐心尝试。

image

示例代码:设置图像风格

Python

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os


prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"

# 修改style生成不同风格的图像
style = '<auto>'

# 同步调用
print('----sync call, please wait a moment----')

rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model=ImageSynthesis.Models.wanx_v1,
                          prompt=prompt,
                          n=1,
                          style=style,
                          size='1024*1024')
if rsp.status_code == HTTPStatus.OK:
    print(rsp.output)

    # 保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

Java

import com.alibaba.dashscope.aigc.imagesynthesis.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {

    public void syncCall() {
        String prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。";
        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model(ImageSynthesis.Models.WANX_V1)
                        .prompt(prompt)
                        .style("<auto>")
                        .n(1)
                        .size("1024*1024")
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }


    public static void main(String[] args){
        Main main = new Main();
        main.syncCall();
    }

}

curl

HTTP调用仅支持异步获取模型结果,您需要发起两个请求。

1、创建文生图任务

此接口返回任务ID,可根据任务ID查询图像生成的结果。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wanx-v1",
    "input": {
        "prompt": "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"
    },
    "parameters": {
        "style": "<auto>",
        "size": "1024*1024",
        "n": 1
    }
}'
    

2、根据任务ID查询结果

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{your_task_id} \
     -H "Authorization: Bearer $DASHSCOPE_API_KEY" \

使用反向提示词

我们基于上述图像风格示例的正向提示词,进一步增加反向提示词,以便更好地控制模型的生成效果。正向提示词和反向提示词如下所示。

//正向提示词
prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"

//反向提示词
negative_prompt = "不要使用红色元素"

您可以通过正向提示词描述期望的图像元素和风格,使用反向提示词来描述不希望在图像中看到的内容。例如,设置negative_prompt以限制输出图像中不要使用红色元素。

image

更多提示词使用技巧请查看通义万相文字作画-使用指南

示例代码:使用反向提示词

Python

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os


prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"
negative_prompt = "不要使用红色元素"

# 同步调用
print('----sync call, please wait a moment----')

rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model=ImageSynthesis.Models.wanx_v1,
                          prompt=prompt,
                          negative_prompt=negative_prompt,
                          n=1,
                          style='<auto>',
                          size='1024*1024')
if rsp.status_code == HTTPStatus.OK:
    print(rsp.output)

    # 保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

Java

import com.alibaba.dashscope.aigc.imagesynthesis.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {

    public void syncCall() {
        String prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。";
        String negativePrompt = "不要使用红色元素";
        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model(ImageSynthesis.Models.WANX_V1)
                        .prompt(prompt)
                        .negativePrompt(negativePrompt)
                        .style("<auto>")
                        .n(1)
                        .size("1024*1024")
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }


    public static void main(String[] args){
        Main main = new Main();
        main.syncCall();
    }

}

curl

HTTP调用仅支持异步获取模型结果,您需要发起两个请求。

1、创建文生图任务

此接口返回任务ID,可根据任务ID查询图像生成的结果。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wanx-v1",
    "input": {
        "prompt": "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。",
        "negative_prompt": "不要使用红色元素"
    },
    "parameters": {
        "style": "<auto>",
        "size": "1024*1024",
        "n": 1
    }
}'
    

2、根据任务ID查询结果

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{your_task_id} \
     -H "Authorization: Bearer $DASHSCOPE_API_KEY" \

基于参考图生成图像

基于参考图生成图像涉及两个参数:ref_strength参数和ref_mode参数。

设置相似度

您可以使用ref_strength参数来控制输出图像与参考图的相似度。它的取值范围是[0.0, 1.0],取值越大代表跟参考图像越相似,细节越丰富。

image

示例代码:设置相似度

Python

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os


prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"

# 上传参考图方式:url链接和本地路径二选一
# 使用公网url链接
ref_img = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/rguyzt/girl.png"
# 使用本地文件路径
sketch_image_url = './girl.png'

# 同步调用
print('----sync call, please wait a moment----')

rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model=ImageSynthesis.Models.wanx_v1,
                          prompt=prompt,
                          n=1,
                          style='<auto>',
                          # sketch_image_url=sketch_image_url,
                          ref_img=ref_img,
                          ref_mode='repaint',
                          ref_strength=0.0,
                          size='1024*1024')
if rsp.status_code == HTTPStatus.OK:
    print(rsp.output)

    # 保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

Java

import com.alibaba.dashscope.aigc.imagesynthesis.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;

public class Main {

    public void syncCall() {
        String prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。";
         //使用公网url链接
        String refImage = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/rguyzt/girl.png";

        //图像处理参数
        HashMap<String,Object> parameters = new HashMap<>();
        parameters.put("ref_strength", 0.0);
        parameters.put("ref_mode", "repaint");
        
        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model(ImageSynthesis.Models.WANX_V1)
                        .prompt(prompt)
                        .style("<auto>")
                        .n(1)
                        .size("1024*1024")
                        .refImage(refImage)
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }


    public static void main(String[] args){
        Main main = new Main();
        main.syncCall();
    }

}

curl

HTTP调用仅支持异步获取模型结果,您需要发起两个请求。

1、创建文生图任务

此接口返回任务ID,可根据任务ID查询图像生成的结果。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wanx-v1",
    "input": {
        "prompt": "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。",
        "ref_image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/rguyzt/girl.png"
    },
    "parameters": {
        "style": "<auto>",
        "size": "1024*1024",
        "n": 1,
        "ref_strength": 0.0,
        "ref_mode": "repaint"
    }
}'
    

2、根据任务ID查询结果

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{your_task_id} \
     -H "Authorization: Bearer $DASHSCOPE_API_KEY" \

根据参考图像内容或风格生成图像

您可以通过ref_mode参数来控制如何基于参考图像生成相似图。

基于参考图像生成相似图有两个处理方式:

  • 根据参考图像内容生成图像:ref_mode="repaint",默认为该值。

  • 根据参考图像风格生成图像:ref_mode="refonly"

根据参考图像内容生成相似图(ref_mode="repaint")

这种方式强调关注图像中的某个主体,在图像主体上增加变化,如风格、面部表情等,并且保持图像整体细节。您可以通过调整prompt在参考图上进行二次创作或优化。

在下图中,新的prompt对应的输出图像相比原始prompt的输出图像面部表情更加丰富,整体氛围感更强。对于主体较为明显的参考图像,使用refonly模式生成的图像有一定概率会丢失图像细节,您可以多次调试观察效果。

image

上文提到的原始prompt和新prompt的示例如下所示。

//原始prompt:描述参考图像的内容(图片上未标注的均使用原始prompt)
prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"

//新prompt:描述新的人物形象
prompt = "一个英气的黑发女人,飞舞着金色的蝴蝶,背景中有若隐若现的水墨竹林,高细节,高质量。"

示例代码:根据参考图像内容生成相似图(ref_mode="repaint")

Python

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os


# prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。"

# 新prompt:描述新的人物形象
prompt = "一个英气的黑发女人,飞舞着金色的蝴蝶,背景中有若隐若现的水墨竹林,高细节,高质量。"


# 上传参考图方式:url链接和本地路径二选一
# 使用公网url链接
ref_img = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/rguyzt/girl.png"
# 使用本地文件路径
sketch_image_url = './girl.png'

# 同步调用
print('----sync call, please wait a moment----')

rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model=ImageSynthesis.Models.wanx_v1,
                          prompt=prompt,
                          n=1,
                          style='<auto>',
                          # sketch_image_url=sketch_image_url,
                          ref_img=ref_img,
                          ref_mode='repaint',
                          ref_strength=1.0,
                          size='1024*1024')
if rsp.status_code == HTTPStatus.OK:
    print(rsp.output)

    # 保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

Java

import com.alibaba.dashscope.aigc.imagesynthesis.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;

public class Main {

    public void syncCall() {
        //String prompt = "近景镜头,18岁的中国女孩,古代服饰,圆脸,正面看着镜头,民族优雅的服装,商业摄影,室外,电影级光照,半身特写,精致的淡妆,锐利的边缘。";
        //新prompt:描述新的人物形象
        String prompt = "一个英气的黑发女人,飞舞着金色的蝴蝶,背景中有若隐若现的水墨竹林,高细节,高质量。"
         
         //使用公网url链接
        String refImage = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/rguyzt/girl.png";

        //图像处理参数
        HashMap<String,Object> parameters = new HashMap<>();
        parameters.put("ref_strength", 1.0);
        parameters.put("ref_mode", "repaint");
        
        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model(ImageSynthesis.Models.WANX_V1)
                        .prompt(prompt)
                        .style("<auto>")
                        .n(1)
                        .size("1024*1024")
                        .refImage(refImage)
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }


    public static void main(String[] args){
        Main main = new Main();
        main.syncCall();
    }

}

curl

HTTP调用仅支持异步获取模型结果,您需要发起两个请求。

1、创建文生图任务

此接口返回任务ID,可根据任务ID查询图像生成的结果。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wanx-v1",
    "input": {
        "prompt": "一个英气的黑发女人,飞舞着金色的蝴蝶,背景中有若隐若现的水墨竹林,高细节,高质量。",
        "ref_image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/rguyzt/girl.png"
    },
    "parameters": {
        "style": "<auto>",
        "size": "1024*1024",
        "n": 1,
        "ref_strength": 1.0,
        "ref_mode": "repaint"
    }
}'
    

2、根据任务ID查询结果

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{your_task_id} \
     -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
根据参考图像风格生成相似图(ref_mode="refonly")

这种方式适合风格迁移场景的图像绘画,比如在参考图像上增加新的内容等。目前,wanx-v1模型在该场景下的生成效果不太稳定,请您耐心尝试。

image

示例代码:根据参考图像风格生成相似图(ref_mode="refonly")

Python

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os


prompt = "有一只黑色的小猫"

# 上传参考图方式:url链接和本地路径二选一
# 使用公网url链接
ref_img = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/gpqnqy/house.png"
# 使用本地文件路径
sketch_image_url = './house.png'

# 同步调用
print('----sync call, please wait a moment----')

rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model=ImageSynthesis.Models.wanx_v1,
                          prompt=prompt,
                          n=1,
                          style='<auto>',
                          # sketch_image_url=sketch_image_url,
                          ref_img=ref_img,
                          ref_mode='refonly',
                          ref_strength=0.7,
                          size='1024*1024')
if rsp.status_code == HTTPStatus.OK:
    print(rsp.output)

    # 保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

Java

import com.alibaba.dashscope.aigc.imagesynthesis.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;

public class Main {

    public void syncCall() {
        String prompt = "有一只黑色的小猫"
         
         //使用公网url链接
        String refImage = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/gpqnqy/house.png";

        //图像处理参数
        HashMap<String,Object> parameters = new HashMap<>();
        parameters.put("ref_strength", 0.7);
        parameters.put("ref_mode", "refonly");
        
        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model(ImageSynthesis.Models.WANX_V1)
                        .prompt(prompt)
                        .style("<auto>")
                        .n(1)
                        .size("1024*1024")
                        .refImage(refImage)
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }


    public static void main(String[] args){
        Main main = new Main();
        main.syncCall();
    }

}

curl

HTTP调用仅支持异步获取模型结果,您需要发起两个请求。

1、创建文生图任务

此接口返回任务ID,可根据任务ID查询图像生成的结果。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wanx-v1",
    "input": {
        "prompt": "有一只黑色的小猫",
        "ref_image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/gpqnqy/house.png"
    },
    "parameters": {
        "style": "<auto>",
        "size": "1024*1024",
        "n": 1,
        "ref_strength": 0.7,
        "ref_mode": "refonly"
    }
}'
    

2、根据任务ID查询结果

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/{your_task_id} \
     -H "Authorization: Bearer $DASHSCOPE_API_KEY" \