素材库功能说明
概述
素材库是一个专业的图片素材管理页面,完全按照设计图实现,支持上传、浏览、编辑和删除素材。
功能特性
1. 页面布局
- 页面标题: "素材库" - 上传、浏览和管理所有基础图片素材
- 导航标签: 三个主要分类
- IP素材 (人脸) - 管理人脸图片素材
- 产品素材 (服装) - 管理服装产品素材
- 上传原图 - 通用上传功能
2. 上传功能
- 拖拽上传: 支持拖拽文件到上传区域
- 点击上传: 点击上传区域或"浏览文件"按钮选择文件
- 文件限制:
- 支持格式: PNG, JPG, JPEG
- 文件大小: 不超过200MB
- 批量上传: 支持同时选择多个文件上传
3. 素材管理
- 素材展示: 网格布局展示所有上传的素材
- 素材信息: 显示素材名称、类型、上传时间
- 编辑功能: 点击编辑按钮可以修改素材名称
- 删除功能: 悬停显示删除按钮,支持删除素材
- AI标签: 人脸素材显示"AI生成"标签
4. 后端集成
- API接口: 完全集成后端user_material_api.py
- 认证支持: 支持用户认证和权限验证
- 实时同步: 上传、编辑、删除操作实时同步到后端
技术实现
前端技术栈
- React 18: 使用函数式组件和Hooks
- Tailwind CSS: 响应式设计和现代UI
- Radix UI: 高质量UI组件库
- Lucide React: 图标库
- Sonner: 现代化Toast通知
后端API
- FastAPI: 高性能Python Web框架
- SQLAlchemy: ORM数据库操作
- 文件存储: 本地文件系统存储
- 权限验证: 用户认证和授权
核心组件
MaterialLibrary.jsx
主页面组件,包含:
- 页面布局和导航
- 文件上传处理
- 素材数据管理
- 与后端API交互
MaterialCard.jsx
素材卡片组件,包含:
materials.js
API接口封装,包含:
- 上传素材接口
- 获取素材列表
- 删除素材
- 更新素材信息
使用流程
1. 访问素材库
- 登录系统后,点击侧边栏"素材库"菜单
- 页面将显示当前用户的素材列表
2. 上传素材
- 选择对应的素材类型标签(人脸/产品)
- 拖拽文件到上传区域或点击"浏览文件"
- 选择支持格式的图片文件
- 等待上传完成,素材将显示在列表中
3. 管理素材
- 查看素材: 素材以网格形式展示
- 编辑名称: 点击素材下方的编辑按钮修改名称
- 删除素材: 悬停在素材上显示删除按钮
- 切换类型: 点击不同标签查看对应类型的素材
4. 素材分类
- IP素材 (人脸): 管理人脸图片,用于AI换脸
- 产品素材 (服装): 管理服装图片,用于AI换装
- 上传原图: 通用上传功能
API接口说明
上传素材
POST /api/v1/users/{user_id}/materials
Content-Type: multipart/form-data
参数:
- file: 图片文件
- image_type: 素材类型 (face/cloth)
- original_filename: 原始文件名
获取素材列表
GET /api/v1/users/{user_id}/materials?material_type={type}&page={page}&page_size={size}
删除素材
DELETE /api/v1/users/{user_id}/materials/{material_id}
更新素材
PUT /api/v1/users/{user_id}/materials/{material_id}
Content-Type: application/json
参数:
- original_filename: 新的文件名
开发说明
环境要求
- Node.js 18+
- Python 3.8+
- FastAPI
- SQLAlchemy
启动开发环境
# 启动后端服务
cd backend
python -m uvicorn backend.api.ai_swap_api:app --reload --host 0.0.0.0 --port 8000
# 启动前端服务
cd frontend
npm run dev
访问地址
注意事项
- 文件大小限制: 单个文件不能超过200MB
- 文件格式: 仅支持PNG、JPG、JPEG格式
- 用户权限: 只能管理自己的素材
- 网络连接: 上传大文件需要稳定的网络连接
- 存储空间: 注意服务器存储空间的使用
故障排除
常见问题
上传失败
- 检查文件格式是否正确
- 检查文件大小是否超限
- 检查网络连接是否正常
图片无法显示
编辑失败
删除失败
日志查看
- 前端控制台: 浏览器开发者工具
- 后端日志: backend/logs/ 目录
- API日志: 查看FastAPI启动时的日志输出