[Feature] add a new response_format is file type when image generate (#1673)

Signed-off-by: rongfu.leng <lenronfu@gmail.com>
Co-authored-by: Gao Han <hgaoaf@connect.ust.hk>
This commit is contained in:
rongfu.lengandGao Han authored and GitHub committed 2026-06-24 09:04:13 +08:00
1 parent 6dc4638a7e
commit a2d1dafc65
4 files changed
+150 -5

No files matched your search

@@ -1301,6 +1301,58 @@ def test_generate_images_rejects_model_mismatch(test_client):
assert "model mismatch" in response.json()["detail"].lower()
def test_image_file_response_format_multiple(test_client):
"""Test response_format=file with n>1 returns ZIP archive"""
response = test_client.post(
"/v1/images/generations",
json={
"prompt": "a dog",
"n": 3,
"response_format": "file",
},
)
assert response.status_code == 200
assert response.headers["content-type"] == "application/zip"
assert "attachment" in response.headers.get("content-disposition", "")
assert ".zip" in response.headers.get("content-disposition", "")
# Verify it's a valid ZIP with 3 PNG files
import zipfile
zip_buffer = io.BytesIO(response.content)
with zipfile.ZipFile(zip_buffer, "r") as zf:
files = zf.namelist()
assert len(files) == 3
assert all(f.endswith(".png") for f in files)
# Verify each file is a valid PNG
for filename in files:
img_bytes = zf.read(filename)
img = Image.open(io.BytesIO(img_bytes))
assert img.format == "PNG"
def test_image_file_response_format_single(test_client):
"""Test response_format=file with n=1 returns a single image file."""
response = test_client.post(
"/v1/images/generations",
json={
"prompt": "a dog",
"n": 1,
"response_format": "file",
},
)
assert response.status_code == 200
assert response.headers["content-type"] == "image/png"
assert "attachment" in response.headers.get("content-disposition", "")
assert ".png" in response.headers.get("content-disposition", "")
img = Image.open(io.BytesIO(response.content))
assert img.format == "PNG"
def make_test_image_bytes(size=(64, 64)) -> bytes:
img = Image.new(
"RGB",