fix(image): record reference source metadata in request.json
This commit is contained in:
@@ -214,6 +214,32 @@ def resolve_image_source(prefix: str) -> str | None:
|
||||
return provided[0][1]
|
||||
|
||||
|
||||
def describe_image_source(source: str | None, fallback_name: str) -> dict[str, str] | None:
|
||||
if source is None:
|
||||
return None
|
||||
|
||||
value = source.strip()
|
||||
if not value:
|
||||
return None
|
||||
|
||||
lowered = value.lower()
|
||||
if lowered.startswith("data:image/"):
|
||||
source_kind = "data_url"
|
||||
filename = fallback_name
|
||||
elif lowered.startswith(("http://", "https://")):
|
||||
source_kind = "url"
|
||||
filename = Path(urlparse(value).path).name or fallback_name
|
||||
else:
|
||||
source_kind = "file"
|
||||
filename = Path(value).expanduser().name or fallback_name
|
||||
|
||||
return {
|
||||
"source": value,
|
||||
"kind": source_kind,
|
||||
"filename": filename,
|
||||
}
|
||||
|
||||
|
||||
def safe_filename(filename: str, fallback: str, mime_type: str) -> str:
|
||||
candidate = Path(filename).name.strip()
|
||||
if not candidate:
|
||||
@@ -476,6 +502,8 @@ def main() -> None:
|
||||
poll_interval = env_int("IMAGE_POLL_INTERVAL", DEFAULT_POLL_INTERVAL)
|
||||
endpoint_path = "/v1/images/edits" if request_mode == "edit" else "/v1/images/generations"
|
||||
min_output_edge = resolve_min_output_edge(size, resolution, request_style)
|
||||
reference_image_info = describe_image_source(reference_source, "reference-image")
|
||||
mask_image_info = describe_image_source(mask_source, "mask-image")
|
||||
|
||||
print(
|
||||
"开始生成图片:",
|
||||
@@ -508,7 +536,13 @@ def main() -> None:
|
||||
"request_style": request_style,
|
||||
"min_output_edge": min_output_edge,
|
||||
"reference_image_present": bool(reference_source),
|
||||
"reference_image_source": reference_image_info["source"] if reference_image_info else None,
|
||||
"reference_image_source_kind": reference_image_info["kind"] if reference_image_info else None,
|
||||
"reference_image_filename": reference_image_info["filename"] if reference_image_info else None,
|
||||
"mask_image_present": bool(mask_source),
|
||||
"mask_image_source": mask_image_info["source"] if mask_image_info else None,
|
||||
"mask_image_source_kind": mask_image_info["kind"] if mask_image_info else None,
|
||||
"mask_image_filename": mask_image_info["filename"] if mask_image_info else None,
|
||||
"payload": payload,
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user