perf(图片): 接口2/3/5 返回 JPG(体积~9×↓),接口1 标注图仍 PNG(透明)
- app.py: 接口2(预览+生发)/3(生发)/5(发际线叠图) 编码改 JPG(质量90,env JPG_QUALITY); 接口1 annotated_image 含透明仍 PNG。_png_to_jpg_b64 把 ComfyUI 的 PNG 重编码为 JPG(无法解码则透传) - gateway/forward.py: 落盘按内容嗅探扩展名(PNG头→.png 否则.jpg),原先硬编码 .png - 测试/文档同步;实测接口5 一张 59KB(JPG) vs 548KB(PNG)。pytest 44 全绿 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+8
-7
@@ -82,9 +82,10 @@ def test_grow_missing_gender_1004(client):
|
||||
assert r.json()["code"] == 1004
|
||||
|
||||
|
||||
_PNG_1x1 = base64.b64decode(
|
||||
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
|
||||
)
|
||||
# mock ComfyUI 输出:一张合法 PNG(worker 会把它重编码成 JPG)
|
||||
import cv2 as _cv2
|
||||
import numpy as _np
|
||||
_PNG_1x1 = _cv2.imencode(".png", _np.full((8, 8, 3), 200, _np.uint8))[1].tobytes()
|
||||
|
||||
|
||||
def test_grow_female_returns_5(client, monkeypatch):
|
||||
@@ -99,8 +100,8 @@ def test_grow_female_returns_5(client, monkeypatch):
|
||||
results = body["data"]["results"]
|
||||
assert [x["hairline_type"] for x in results] == ["ellipse", "flower", "heart", "straight", "wave"]
|
||||
assert [x["order"] for x in results] == [1, 2, 3, 4, 5]
|
||||
assert base64.b64decode(results[0]["image_base64"])[:8] == b"\x89PNG\r\n\x1a\n"
|
||||
assert base64.b64decode(results[0]["grown_image_base64"])[:8] == b"\x89PNG\r\n\x1a\n"
|
||||
assert base64.b64decode(results[0]["image_base64"])[:3] == b"\xff\xd8\xff" # JPEG
|
||||
assert base64.b64decode(results[0]["grown_image_base64"])[:3] == b"\xff\xd8\xff" # JPEG
|
||||
assert "image_url" not in results[0]
|
||||
|
||||
|
||||
@@ -126,7 +127,7 @@ def test_growb_success(client, monkeypatch):
|
||||
assert body["code"] == 0, body
|
||||
d = body["data"]
|
||||
assert d["hairline_type"] == "custom"
|
||||
assert base64.b64decode(d["hair_growth_image_base64"])[:8] == b"\x89PNG\r\n\x1a\n"
|
||||
assert base64.b64decode(d["hair_growth_image_base64"])[:3] == b"\xff\xd8\xff" # JPEG
|
||||
assert "best_hairline_image_base64" not in d # 已去掉该字段
|
||||
assert "best_hairline_image_url" not in d
|
||||
|
||||
@@ -145,7 +146,7 @@ def test_hairline_gen_female(client):
|
||||
assert body["code"] == 0, body
|
||||
d = body["data"]
|
||||
assert [x["order"] for x in d["hairline_images"]] == [1, 2, 3, 4, 5]
|
||||
assert base64.b64decode(d["hairline_images"][0]["image_base64"])[:8] == b"\x89PNG\r\n\x1a\n"
|
||||
assert base64.b64decode(d["hairline_images"][0]["image_base64"])[:3] == b"\xff\xd8\xff" # JPEG
|
||||
c = d["best_hairline_center_point"]
|
||||
assert 0 <= c["x"] <= 682 and 0 <= c["y"] <= 811 # 落在原图范围内
|
||||
assert "image_url" not in d["hairline_images"][0]
|
||||
|
||||
Reference in New Issue
Block a user