diff --git a/server-rs/crates/api-server/src/editor_project.rs b/server-rs/crates/api-server/src/editor_project.rs index 1646aba75..a0c043d42 100644 --- a/server-rs/crates/api-server/src/editor_project.rs +++ b/server-rs/crates/api-server/src/editor_project.rs @@ -4579,11 +4579,14 @@ pub async fn snap_editor_image_to_pixel_art( })?; let task_id = build_prefixed_uuid_id("pixel-art-snap-"); - let persisted = persist_editor_generated_image( + // 中文注释:尺寸已经在上一步取完,snapped_image 之后不再使用,所以按值移交给 _owned + // 版本。借用版会在内部 `image.bytes.clone()` 复制一整份输出图片;完美像素是同步路径, + // 那份复制会和原图在同一时刻共存。 + let persisted = persist_editor_generated_image_owned( &state, owner_user_id.as_str(), task_id.as_str(), - &snapped_image, + snapped_image, "完美像素", None, EDITOR_PIXEL_ART_SNAP_ASSET_KIND, @@ -10693,7 +10696,7 @@ mod tests { source, "pub async fn snap_editor_image_to_pixel_art(", "async fn validate_editor_background_removal_source", - "persist_editor_generated_image(", + "persist_editor_generated_image_owned(", 1, ); assert_function_not_contains( @@ -10708,6 +10711,9 @@ mod tests { // 中文注释:下载必须走带 deadline 的包装。退回裸调用会让 OSS GET 重新 // 落在 30s 预算之外,请求可以持着最多 32 MiB 无限期排队等 CPU 许可。 "download_editor_persisted_image_object(&state", + // 中文注释:持久化必须走按值移交的 _owned 版本。借用版内部会 clone 一整份 + // 输出图片,在同步路径上和原图同时驻留内存。 + "persist_editor_generated_image(", ], ); }