当需调整图片尺寸以适配特定布局,或在不裁剪主体的前提下拓宽视野时,可使用图像画面扩展模型。该模型支持多种扩图方式:
指定宽高比扩图
指定横向或纵向扩展比例
自定义上下左右各方向扩展像素数
同时支持先旋转再扩图
模型与价格
image-out-painting 模型当前仅提供免费体验。免费额度耗尽后服务将不可用,计划在9月12日起支持付费调用,详情参见商业化收费公告。
模型名称 | 计费单价 | 限流(主账号与RAM子账号共享) | 免费额度(查看) | |
任务下发接口QPS限制 | 同时处理中任务数量 | |||
image-out-painting | 目前仅供免费体验 | 2 | 1 | 500张 |
模型限流规则及常见问题,请参见限流。
模型效果
原图 | |||
旋转扩图 (逆时针旋转90度) | 等比例扩图 (1.5:1.5) | 指定方向添加像素扩图 (上下左右添加像素) | 指定宽高比扩图 (4:3) |
其他效果示例请参考更多扩图示例。
快速开始
前提条件
您需要已获取API Key并配置API Key到环境变量。
扩图建议:为了获得更自然的扩展效果,建议将最终输出图像的宽高比控制在接近1:1的范围内。例如,从 1000x1000 扩展到 1500x1500 的效果,通常优于扩展到 2000x1000。
示例代码
本模型仅提供 HTTP API,请参考curl示例代码。
curl
HTTP调用新手指南请参见Postman。
由于图像生成耗时较长,API 采用异步模式,调用流程分两步:
步骤1:创建任务获取任务ID
接口返回任务ID,可根据任务ID查询图像生成的结果。
请求示例
旋转扩图
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/out-painting' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "image-out-painting",
"input": {
"image_url": "https://huarong123.oss-cn-hangzhou.aliyuncs.com/image/%E5%9B%BE%E5%83%8F%E7%94%BB%E9%9D%A2%E6%89%A9%E5%B1%95.png"
},
"parameters": {
"angle": 90,
"x_scale": 1.5,
"y_scale": 1.5
}
}'
等比例扩图
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/out-painting' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "image-out-painting",
"input": {
"image_url": "https://huarong123.oss-cn-hangzhou.aliyuncs.com/image/%E5%9B%BE%E5%83%8F%E7%94%BB%E9%9D%A2%E6%89%A9%E5%B1%95.png"
},
"parameters": {
"x_scale": 1.5,
"y_scale": 1.5
}
}'
指定方向添加像素扩图
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/out-painting' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "image-out-painting",
"input": {
"image_url": "https://huarong123.oss-cn-hangzhou.aliyuncs.com/image/%E5%9B%BE%E5%83%8F%E7%94%BB%E9%9D%A2%E6%89%A9%E5%B1%95.png"
},
"parameters": {
"left_offset": 546,
"right_offset": 960,
"top_offset": 158,
"bottom_offset": 939
}
}'
指定宽高比扩图
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/out-painting' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "image-out-painting",
"input": {
"image_url": "https://huarong123.oss-cn-hangzhou.aliyuncs.com/image/%E5%9B%BE%E5%83%8F%E7%94%BB%E9%9D%A2%E6%89%A9%E5%B1%95.png"
},
"parameters":{
"angle":0,
"output_ratio":"4:3",
"best_quality":false,
"limit_image_size":true
}
}'
响应示例
请求成功后,API 会返回任务 ID。该 task_id
的查询有效期为 24 小时。
{
"output": {
"task_status": "PENDING",
"task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
},
"request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}
步骤2:查询任务结果
使用步骤1中获取的 task_id
,通过 GET 请求轮询任务查询接口,直到task_status
变为 SUCCEEDED。任务成功后,响应中会包含生成的图像 URL。
请求示例
您需要将86ecf553-d340-4e21-xxxxxxxxx
替换为真实的task_id。
curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
响应示例
图像URL有效期为24小时,请及时下载图像。
{
"request_id": "b67df059-ca6a-9d51-afcd-9b3c4456b1e2",
"output": {
"task_id": "d76ec1e8-ea27-4038-8913-235c88ef0f70",
"task_status": "SUCCEEDED",
"submit_time": "2024-05-16 13:50:01.247",
"scheduled_time": "2024-05-16 13:50:01.354",
"end_time": "2024-05-16 13:50:27.795",
"output_image_url": "https://xxxx/xxxx"
},
"usage": {
"image_count": 1
}
}
Python
阿里云百炼不提供官方的图像画面扩展 Python SDK。以下示例代码基于 `requests` 库实现 HTTP 调用,可供参考。
环境配置
推荐使用Python 3.8及以上版本。
请安装必要的依赖包。
pip install -U requests
请求示例
import os
import requests
import time
from http import HTTPStatus
# 从环境变量获取阿里云百炼API Key,或直接在代码中赋值
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
raise ValueError("请设置环境变量 DASHSCOPE_API_KEY")
def submit_task():
"""提交一个扩图任务"""
url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/out-painting"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"X-DashScope-Async": "enable" # 异步调用
}
body = {
"model": "image-out-painting",
"input": {
"image_url": "https://huarong123.oss-cn-hangzhou.aliyuncs.com/image/%E5%9B%BE%E5%83%8F%E7%94%BB%E9%9D%A2%E6%89%A9%E5%B1%95.png"
},
"parameters": {
"angle": 90,
"x_scale": 1.5,
"y_scale": 1.5
}
}
response = requests.post(url, headers=headers, json=body)
if response.status_code == HTTPStatus.OK:
task_id = response.json().get('output', {}).get('task_id')
print(f"任务提交成功,任务ID为: {task_id}")
return task_id
else:
print(f"任务提交失败,状态码: {response.status_code}, 响应: {response.text}")
return None
def query_task_result(task_id):
"""根据任务ID轮询查询结果"""
if not task_id:
return
url = f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}"
headers = {"Authorization": f"Bearer {api_key}"}
print("开始查询任务状态...")
while True:
response = requests.get(url, headers=headers)
if response.status_code != HTTPStatus.OK:
print(f"查询失败,状态码: {response.status_code}, 响应: {response.text}")
break
response_data = response.json()
task_status = response_data.get('output', {}).get('task_status')
if task_status == 'SUCCEEDED':
print("任务成功完成!")
print(f"任务成功响应数据: {response_data}")
url = response_data.get('output', {}).get('output_image_url', "")
print(f"生成图片 URL: {url}")
break
elif task_status == 'FAILED':
print(f"任务失败。错误信息: {response_data}")
break
else:
print(f"任务正在处理中,当前状态: {task_status}...")
# 这是一个简单轮询方式,建议在生产中采用更优雅的轮询机制
time.sleep(5) # 等待5秒后再次查询
if __name__ == '__main__':
task_id = submit_task()
if task_id:
query_task_result(task_id)
响应示例
任务提交成功,任务ID为: 34d63d84-04c7-452e-88a4-ee76444d05e6
开始查询任务状态...
任务正在处理中,当前状态: RUNNING...
任务正在处理中,当前状态: RUNNING...
任务成功完成!
任务成功响应数据: {'request_id': 'ca5c1337-445e-9636-a46a-ba4b0cb39635', 'output': {'task_id': '34d63d84-04c7-452e-88a4-ee76444d05e6', 'task_status': 'SUCCEEDED', 'submit_time': '2025-09-02 16:51:12.386', 'scheduled_time': '2025-09-02 16:51:12.410', 'end_time': '2025-09-02 16:51:22.478', 'output_image_url': 'https://vigen-invi.oss-cn-shanghai.aliyuncs.com/xxx.jpg?xxxx'}, 'usage': {'image_count': 1}}
生成图片 URL: https://vigen-invi.oss-cn-shanghai.aliyuncs.com/xxx.jpg?xxxx
更多扩图示例
按宽高比扩图
原图 | 扩图后 | 扩图参数 |
| ||
按比例扩图
原图 | 扩图后 | 扩图参数 |
| ||
| ||
| ||
|
按方向添加像素扩图
原图 | 扩图后 | 扩图参数 |
| ||
| ||
|
旋转扩图
原图 | 扩图后 | 扩图参数 |
| ||
API参考
关于图像画面扩展模型的输入输出参数,请参见图像画面扩展API。
错误码
如果模型调用失败并返回报错信息,请参见错误信息进行解决。
常见问题
Q:调用 API 时返回错误,可能是什么原因?
A:请检查以下几点:
API Key 是否正确,并且已配置到环境变量或代码中。
API Key 所在地域与调用的服务地址(Endpoint)是否匹配。
检查免费额度是否已用尽。
请求参数是否正确,例如
image_url
是否可公网访问。本地文件请参见上传文件获取临时URL。
Q:为什么我的任务长时间处于 RUNNING
状态?
A:图像生成需要一定时间,通常在数十秒内完成。如果任务长时间未完成,可能是因为系统繁忙。如果超过数分钟仍未完成,请检查服务状态或联系技术支持。