From ad72e4691c05be61b60cfc368ab4210b1126d2f4 Mon Sep 17 00:00:00 2001 From: kdletters Date: Mon, 29 Jun 2026 11:29:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E4=B8=8E=E4=BA=A4=E4=BA=92=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 生成视频结果写入编辑器资源和素材库,并返回视频素材快照 上传视频使用真实视频尺寸创建素材和画布图层 素材库视频卡片使用签名地址渲染首帧预览并显示视频标签 剪贴板图片粘贴重新接入系统粘贴和右键粘贴路径 多选图层拖拽保留已有选区并批量移动 图标规范引用支持对象存储资源和素材引用,不再要求 Data URL 音效和背景音乐生成失败展示上游详细原因 --- ...架构】图片画布编辑器MVP接入方案-2026-06-11.md | 2 +- .../src/character_animation_assets.rs | 68 ++++- .../crates/api-server/src/editor_project.rs | 247 ++++++++++++++++-- .../src/external_generation_worker.rs | 56 +++- .../crates/shared-contracts/src/assets.rs | 14 + .../ImageCanvasAssetRowView.test.tsx | 31 ++- .../image-editor/ImageCanvasAssetRowView.tsx | 23 +- .../ImageCanvasContextMenusView.tsx | 2 - ...mageCanvasEditorAssetsIntegration.test.tsx | 44 ++++ .../image-editor/ImageCanvasEditorModel.ts | 8 + .../ImageCanvasEditorPrimitives.tsx | 24 +- .../ImageCanvasEditorView.test.tsx | 4 +- .../image-editor/ImageCanvasEditorView.tsx | 42 ++- .../image-editor/ImageCanvasFileModel.ts | 35 ++- .../ImageCanvasGenerationLayerModel.ts | 14 +- .../image-editor/ImageCanvasSelectionModel.ts | 3 + .../ImageCanvasStageInteractionModel.test.ts | 114 ++++++++ .../ImageCanvasUploadModel.test.ts | 38 +++ .../image-editor/ImageCanvasUploadModel.ts | 4 +- ...ImageCanvasGenerationSubmissionWorkflow.ts | 11 + .../useImageCanvasUploadWorkflow.test.tsx | 67 +++++ .../useImageCanvasUploadWorkflow.ts | 18 +- src/index.css | 9 + .../image-editor/editorProjectClient.ts | 6 + 24 files changed, 816 insertions(+), 68 deletions(-) diff --git a/docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md b/docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md index b986a9cd2..dbd3b970e 100644 --- a/docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md +++ b/docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md @@ -110,7 +110,7 @@ - 快速编辑 / 重绘站内 public 示例图、历史 generated 图或 OSS generated 图时,前端先读取成 `data:image/*;base64,...` 再提交,后端不得再收到 `/creation-type-references/*`、`/generated-*` 或 OSS URL 作为 `referenceImageSrcs/sourceImageSrc`。 - 快速编辑的额外参考图既进入输入快照,也作为 `/api/editor/images/edits` 的 `referenceImageSrcs` 提交给后端;原图仍只作为 `sourceImageSrc`,不占用额外参考图额度。 - 素材文件夹可以新建、折叠、重命名和删除;删除普通文件夹后,其素材移动到“项目素材”。普通上传默认落入“上传素材”文件夹;素材库缺少该文件夹时,前端在首次普通上传前创建一次并复用,拖到指定文件夹或点击指定文件夹上传时仍进入目标文件夹。 -- 上传按钮和拖拽上传都支持多文件;底部工具栏的上传入口选择文件后直接进入“上传素材”并在当前画布视口中心创建画布图层,素材栏文件夹内的上传入口只写入对应素材文件夹、不自动入画布;拖到文件夹或该文件夹内素材时进入目标文件夹;拖到画布时进入“上传素材”并在投放点创建画布图层。上传图片必须在创建占位素材、画布图层和账号级素材记录前先读取原图 Resolution,图层宽高、`originalWidth/originalHeight` 和素材库 `width/height` 都使用图片本身尺寸;仅在无法解析尺寸时才使用上传兜底尺寸。 +- 上传按钮和拖拽上传都支持多文件;底部工具栏的上传入口选择文件后直接进入“上传素材”并在当前画布视口中心创建画布图层,素材栏文件夹内的上传入口只写入对应素材文件夹、不自动入画布;拖到文件夹或该文件夹内素材时进入目标文件夹;拖到画布时进入“上传素材”并在投放点创建画布图层。上传图片必须在创建占位素材、画布图层和账号级素材记录前先读取原图 Resolution,图层宽高、`originalWidth/originalHeight` 和素材库 `width/height` 都使用图片本身尺寸;上传视频同样在创建素材和图层前读取视频 metadata 宽高,保证单层下载或 ZIP 导出的真实视频文件重新导入后仍按文件自身尺寸入画布;仅在无法解析尺寸时才使用对应媒体兜底尺寸。 - 音频 / 视频素材卡和画布媒体图层必须提供稳定的非文字视觉预览:优先使用 `thumbnailSrc` / 视频 `poster`,没有真实首帧或音频封面时使用由媒体类型、素材名和地址派生的确定性视觉底图。视频图层使用原生 `