Add README and design spec for poker card design system

This commit is contained in:
Poker Design Developer
2026-05-31 11:46:24 +08:00
commit 00ac63b85c
2 changed files with 1034 additions and 0 deletions

160
README.md Normal file
View File

@@ -0,0 +1,160 @@
# 扑克牌设计管理系统
一个基于 Django + Vue.js 的扑克牌设计管理系统支持个人从零开始设计完整的54张扑克牌系列。
## 功能特性
- **模板系列库** - 提供经典、现代、卡通、复古等预设模板,快速开始设计
- **素材管理** - 上传自定义花色图案、JQK人像、大小王、背面图案等
- **实时预览** - 基于 Fabric.js 的可视化编辑器实时预览54张牌面
- **自动对称化** - JQK人像上传后自动生成中心对称版本
- **多图层支持** - 支持背景、边框、人像、装饰等多层次图像叠加
- **批量导出** - 一键导出整套扑克牌为PNG格式支持多种分辨率
## 技术栈
### 后端
- Django 5.x
- Django REST Framework
- SQLite
- Pillow (图像处理)
### 前端
- Vue.js 3.x
- Fabric.js 6.x (Canvas图形库)
- Pinia (状态管理)
- Element Plus (UI组件库)
- Vite (构建工具)
## 项目结构
```
poker-design-system/
├── backend/ # Django后端
│ ├── poker_api/ # Django项目配置
│ ├── apps/
│ │ ├── projects/ # 项目管理
│ │ ├── templates/ # 模板管理
│ │ └── exports/ # 导出服务
│ ├── media/ # 上传的素材文件
│ ├── db.sqlite3 # SQLite数据库
│ └── requirements.txt
├── frontend/ # Vue前端
│ ├── src/
│ │ ├── components/ # Vue组件
│ │ ├── views/ # 页面视图
│ │ ├── stores/ # Pinia状态管理
│ │ ├── api/ # Django API调用
│ │ └── utils/ # 工具函数
│ ├── public/
│ └── package.json
└── docs/
└── specs/ # 设计规格文档
```
## 快速开始
### 后端启动
```bash
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```
后端服务将运行在 http://localhost:8000
### 前端启动
```bash
cd frontend
npm install
npm run dev
```
前端服务将运行在 http://localhost:5173
## 扑克牌结构
系统支持完整的54张标准扑克牌
| 类型 | 数量 | 说明 |
|------|------|------|
| 数字牌 | 40张 | 4花色 × 10张A, 2-10 |
| 花牌 JQK | 12张 | 4花色 × 3张J, Q, K |
| 大小王 | 2张 | 大王、小王 |
**花色分类:**
- ♠ 黑桃 (Spade) - 黑色
- ♥ 红桃 (Heart) - 红色
- ♣ 梅花 (Club) - 黑色
- ♦ 方块 (Diamond) - 红色
## 核心功能
### 1. 模板系列库
系统提供多种预设模板:
- **经典风格** - 标准扑克牌设计,传统花色和字体
- **现代简约** - 扁平化设计,简洁线条
- **卡通风格** - Q版可爱人像圆润花色图案
- **复古风格** - 复古色调和纹理
### 2. 素材上传
支持上传的素材类型:
- 花色图案 (PNG/SVG)
- JQK人像 (PNG/JPG)
- 大小王图案 (PNG/JPG)
- 背面图案 (PNG/JPG)
- 边框装饰 (SVG)
- 数字字体 (TTF/OTF)
### 3. 设计编辑器
- 实时预览和编辑
- 多图层管理
- 缩放和平移
- 中心对称生成JQK
- 批量应用样式
### 4. 导出功能
- 单张导出 PNG
- 批量导出整副牌ZIP压缩包
- 多种分辨率选择:
- 标准 (750×1050px)
- 高清 (1500×2100px)
- 超高清 (3000×4200px)
## API 文档
### 项目管理
- `GET /api/projects/` - 获取所有项目
- `POST /api/projects/` - 创建新项目
- `GET /api/projects/{id}/` - 获取项目详情
- `PUT /api/projects/{id}/` - 更新项目
- `DELETE /api/projects/{id}/` - 删除项目
### 素材管理
- `GET /api/projects/{id}/assets/` - 获取项目素材
- `POST /api/projects/{id}/assets/` - 上传素材
- `DELETE /api/projects/{id}/assets/{asset_id}/` - 删除素材
### 导出服务
- `POST /api/projects/{id}/export/` - 批量导出
- `GET /api/projects/{id}/export/{card_key}/` - 导出单张牌
## 开发计划
详细的设计规格文档请查看:`docs/superpowers/specs/2026-05-31-poker-card-design-system.md`
## 许可证
MIT License

View File

@@ -0,0 +1,874 @@
# 扑克牌设计管理系统 - 设计规格文档
**日期:** 2026-05-31
**项目类型:** Web应用 - 个人扑克牌设计工具
**目标用户:** 个人用户从零开始设计扑克牌系列
---
## 1. 项目概述
### 1.1 核心目标
构建一个基于Web的扑克牌设计管理系统支持
- 基于模板快速创建扑克牌系列
- 上传自定义素材(花色、人像、边框等)
- 实时预览和编辑54张扑克牌
- 批量导出PNG格式图片
### 1.2 设计原则
- **混合模式:** 系统提供基础模板,用户可选择性替换任意元素
- **自动对称化:** JQK人像上传后自动生成中心对称版本
- **预设布局:** 数字牌花色图案按标准模板排列,用户无需逐张设计
- **多图层支持:** JQK花牌支持多层次图像叠加背景、边框、人像、装饰等
### 1.3 扑克牌结构
**总计54张牌**
| 类型 | 数量 | 说明 |
|------|------|------|
| 数字牌 | 40张 | 4花色 × 10张A, 2-10 |
| 花牌 JQK | 12张 | 4花色 × 3张J, Q, K |
| 大小王 | 2张 | 大王、小王 |
**花色分类:**
- 黑桃- 黑色
- 红桃- 红色
- 梅花- 黑色
- 方块- 红色
---
## 2. 技术架构
### 2.1 技术栈
| 技术 | 版本 | 用途 |
|------|------|------|
| Vue.js | 3.x | 前端框架响应式UI |
| Fabric.js | 6.x | Canvas图形库图层管理 |
| Pinia | 2.x | 状态管理 |
| Element Plus | 2.x | UI组件库 |
| Vite | 5.x | 构建工具 |
| TypeScript | 5.x | 类型安全 |
### 2.2 架构特点
- **纯前端应用:** 无需后端服务器,所有处理在浏览器完成
- **本地存储:** 使用 IndexedDB 存储项目配置和素材
- **Canvas渲染** Fabric.js 提供高性能图形渲染和图层操作
- **模块化设计:** 组件独立,易于维护和扩展
### 2.3 目录结构
```
poker-design-system/
├── public/
│ └── templates/ # 预设模板素材
│ ├── classic/
│ ├── modern/
│ ├── cartoon/
│ └── vintage/
├── src/
│ ├── assets/ # 静态资源
│ ├── components/ # Vue组件
│ │ ├── Editor/ # 编辑器组件
│ │ ├── Assets/ # 素材管理组件
│ │ ├── Preview/ # 预览组件
│ │ └── Export/ # 导出组件
│ ├── composables/ # Vue组合式函数
│ │ ├── useCanvas.js # Fabric.js封装
│ │ ├── useAssets.js # 素材管理
│ │ └── useExport.js # 导出功能
│ ├── stores/ # Pinia状态管理
│ │ ├── projectStore.js # 项目状态
│ │ ├── assetStore.js # 素材状态
│ │ └── editorStore.js # 编辑器状态
│ ├── utils/ # 工具函数
│ │ ├── cardLayout.js # 牌面布局计算
│ │ ├── symmetry.js # 中心对称处理
│ │ └── export.js # 导出工具
│ ├── templates/ # 模板配置
│ │ ├── classic.js
│ │ ├── modern.js
│ │ └── ...
│ ├── App.vue
│ └── main.js
├── package.json
└── vite.config.js
```
---
## 3. 功能模块设计
### 3.1 模板系列库
#### 3.1.1 预设模板
**经典风格**
- 标准扑克牌设计
- 传统花色图案(实心黑桃、红桃等)
- 经典衬线字体
- 简洁边框
**现代简约**
- 扁平化设计
- 简洁线条花色
- 无衬线字体
- 无边框或细边框
**卡通风格**
- Q版可爱人像
- 圆润花色图案
- 活泼字体
- 彩色边框
**复古风格**
- 复古色调(米黄、深红等)
- 复杂花纹边框
- 装饰性字体
- 纹理背景
#### 3.1.2 模板数据结构
```typescript
interface Template {
id: string;
name: string;
description: string;
preview: string; // 预览图URL
defaultAssets: {
suitSymbols: {
spade: string;
heart: string;
club: string;
diamond: string;
};
numberFont: FontConfig;
faceCardBorder: string; // JQK边框SVG
backPattern: string; // 背面图案
};
colorScheme: {
spade: string; // 黑桃颜色
heart: string; // 红桃颜色
club: string; // 梅花颜色
diamond: string; // 方块颜色
background: string; // 牌面背景色
};
}
```
### 3.2 素材管理模块
#### 3.2.1 可上传素材类型
| 素材类型 | 文件格式 | 数量 | 必需 | 说明 |
|---------|---------|------|------|------|
| 花色图案 | PNG/SVG | 4个 | 否 | 黑桃、红桃、梅花、方块 |
| 数字字体 | TTF/OTF | 1套 | 否 | A, 2-10的数字样式 |
| JQK人像 | PNG/JPG | 12张 | 否 | 每种花色的J/Q/K |
| 大小王 | PNG/JPG | 2张 | 否 | 大王、小王独立图案 |
| 背面图案 | PNG/JPG | 1张 | 否 | 扑克牌背面设计 |
| 边框装饰 | SVG | 可选 | 否 | 牌面边框样式 |
#### 3.2.2 素材存储
- **IndexedDB** 存储上传的图片文件Base64或Blob
- **项目配置:** 存储素材引用路径和配置参数
- **混合模式:** 未上传的素材自动使用模板默认值
#### 3.2.3 素材管理界面
```
┌────────────────────────────────────┐
│ 素材库 │
├────────────────────────────────────┤
│ 花色图案 │
│ ┌────┬────┬────┬────┐ │
│ │ ♠ │ ♥ │ ♣ │ ♦ │ │
│ │上传│上传│上传│上传│ │
│ └────┴────┴────┴────┘ │
│ │
│ JQK人像 │
│ ┌─────────────────────────┐ │
│ │ 黑桃: J[上传] Q[上传] K[上传]│ │
│ │ 红桃: J[上传] Q[上传] K[上传]│ │
│ │ 梅花: J[上传] Q[上传] K[上传]│ │
│ │ 方块: J[上传] Q[上传] K[上传]│ │
│ └─────────────────────────┘ │
│ │
│ 大小王 │
│ ┌────┬────┐ │
│ │大王│小王│ │
│ │上传│上传│ │
│ └────┴────┘ │
│ │
│ 其他素材 │
│ 背面图案: [上传] │
│ 边框装饰: [上传] │
│ 数字字体: [上传] │
└────────────────────────────────────┘
```
### 3.3 设计编辑器
#### 3.3.1 界面布局
```
┌────────────────────────────────────────────────────────┐
│ 工具栏:[模板选择] [保存] [导出] [设置] │
├──────────────┬─────────────────────────────────────────┤
│ │ │
│ 左侧面板 │ 中间画布区域 │
│ │ │
│ [素材库] │ ┌─────────────────────┐ │
│ [图层管理] │ │ │ │
│ [样式调整] │ │ 实时预览 │ │
│ │ │ 当前选中牌面 │ │
│ ┌────────┐ │ │ │ │
│ │图层列表│ │ │ 支持缩放/平移 │ │
│ │├ 背景 │ │ │ │ │
│ │├ 边框 │ │ └─────────────────────┘ │
│ │├ 人像 │ │ │
│ │├ 装饰 │ │ │
│ │└ 文字 │ │ │
│ └────────┘ │ │
│ │ │
├──────────────┴─────────────────────────────────────────┤
│ 底部牌列表: │
│ [♠A][♠2]...[♠K][♥A]...[♥K][♣A]...[♣K][♦A]...[♦K][大][小]│
│ 点击切换编辑 │
└────────────────────────────────────────────────────────┘
```
#### 3.3.2 Fabric.js 图层结构
**数字牌图层A, 2-10**
```
图层栈(从下到上):
├─ 背景层(牌面底色)
├─ 边框层(可选装饰边框)
├─ 花色图案层(中间排列的花色图案)
├─ 角标数字层(左上、右下)
└─ 角标花色层(左上、右下)
```
**花牌图层JQK**
```
图层栈(从下到上):
├─ 背景层(牌面底色)
├─ 边框层(装饰边框)
├─ 背景装饰层(花纹、纹理)
├─ 主体图案层(上传的人像,自动中心对称)
│ ├─ 上半部分人像(原始)
│ └─ 下半部分人像翻转180°
├─ 花色装饰层(角标、装饰元素)
├─ 字母层J/Q/K标识四角
└─ 花色符号层(四角的花色图案)
```
**大小王图层:**
```
图层栈(从下到上):
├─ 背景层
├─ 边框层
├─ 主体图案层(上传的图片)
└─ 文字标识层("JOKER"等)
```
#### 3.3.3 核心功能
**实时预览**
- 修改素材立即更新画布
- 支持缩放50% - 200%
- 支持平移查看
**图层管理**
- 调整图层顺序
- 控制图层可见性
- 设置图层透明度
- 锁定图层
**中心对称生成**
- 用户上传单张JQK人像
- 系统自动分割为上下两部分
- 下半部分垂直翻转
- 拼接生成中心对称图案
**批量应用**
- 应用花色图案到所有相关牌面
- 应用边框到整副牌
- 应用字体样式到所有文字
### 3.4 数字牌布局模板
#### 3.4.1 标准布局规则
**牌面坐标系:**
- 牌面尺寸750×1050px标准
- 安全区域距边缘50px
- 有效区域650×950px
**花色图案尺寸:**
- 单个图案60×60px可调整
- 间距:根据点数自动计算
#### 3.4.2 各点数布局
**A1个花色**
```
┌─────────────┐
│ │
│ │
│ ● │ 居中
│ │
│ │
└─────────────┘
```
**22个花色**
```
┌─────────────┐
│ ● │ 上部居中
│ │
│ │
│ │
│ ● │ 下部居中
└─────────────┘
```
**33个花色**
```
┌─────────────┐
│ ● │ 上部居中
│ │
│ ● │ 中部居中
│ │
│ ● │ 下部居中
└─────────────┘
```
**44个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ │
│ │
│ │
│ ● ● │ 下部左右
└─────────────┘
```
**55个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ │
│ ● │ 中部居中
│ │
│ ● ● │ 下部左右
└─────────────┘
```
**66个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ │
│ ● ● │ 中部左右
│ │
│ ● ● │ 下部左右
└─────────────┘
```
**77个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ ● │ 上中居中
│ ● ● │ 中部左右
│ │
│ ● ● │ 下部左右
└─────────────┘
```
**88个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ ● │ 上中居中
│ ● ● │ 中部左右
│ ● │ 下中居中
│ ● ● │ 下部左右
└─────────────┘
```
**99个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ ● │ 上中居中
│ ● ● ● │ 中部三列
│ ● │ 下中居中
│ ● ● │ 下部左右
└─────────────┘
```
**1010个花色**
```
┌─────────────┐
│ ● ● │ 上部左右
│ ● ● │ 上中左右
│ ● │ 中部居中
│ ● ● │ 下中左右
│ ● ● │ 下部左右
└─────────────┘
```
### 3.5 导出功能
#### 3.5.1 导出选项
**导出范围:**
- 单张导出:当前选中的牌
- 批量导出整副54张牌
- 分类导出:仅数字牌 / 仅花牌 / 仅大小王
**分辨率选项:**
| 分辨率 | 尺寸 | 用途 |
|--------|------|------|
| 标准 | 750×1050px | 打印质量 |
| 高清 | 1500×2100px | 2倍分辨率 |
| 超高清 | 3000×4200px | 4倍分辨率 |
**文件格式:**
- PNG带透明通道
- 文件命名规则:
- 数字牌:`{suit}-{number}.png`spade-A.png, heart-7.png
- 花牌:`{suit}-{face}.png`club-J.png, diamond-Q.png
- 大小王:`joker-big.png`, `joker-small.png`
- 背面:`back.png`
#### 3.5.2 导出流程
```
用户点击导出
选择导出范围和分辨率
系统遍历所有需要导出的牌
对每张牌:
- 创建临时Canvas
- 按图层顺序渲染
- 应用分辨率缩放
- 导出为PNG Blob
打包为ZIP文件批量导出时
触发浏览器下载
```
---
## 4. 数据结构设计
### 4.1 项目配置
```typescript
interface Project {
id: string;
name: string;
createdAt: Date;
updatedAt: Date;
template: string; // 模板ID
cardSize: {
width: number;
height: number;
};
assets: AssetCollection;
exportSettings: ExportSettings;
}
```
### 4.2 素材集合
```typescript
interface AssetCollection {
suitSymbols: {
spade?: Asset;
heart?: Asset;
club?: Asset;
diamond?: Asset;
};
faceCards: {
spade: { J?: Asset; Q?: Asset; K?: Asset };
heart: { J?: Asset; Q?: Asset; K?: Asset };
club: { J?: Asset; Q?: Asset; K?: Asset };
diamond: { J?: Asset; Q?: Asset; K?: Asset };
};
jokers: {
big?: Asset;
small?: Asset;
};
backPattern?: Asset;
border?: Asset;
numberFont?: FontAsset;
}
interface Asset {
id: string;
type: 'image' | 'font' | 'svg';
name: string;
data: string; // Base64或Blob URL
width?: number;
height?: number;
uploadedAt: Date;
}
```
### 4.3 图层配置
```typescript
interface Layer {
id: string;
name: string;
type: 'background' | 'border' | 'pattern' | 'image' | 'text' | 'symbol';
visible: boolean;
locked: boolean;
opacity: number; // 0-1
zIndex: number;
properties: {
x: number;
y: number;
width: number;
height: number;
rotation?: number; // 旋转角度
scaleX?: number;
scaleY?: number;
};
}
```
### 4.4 导出设置
```typescript
interface ExportSettings {
resolution: 'standard' | 'hd' | 'ultra-hd';
format: 'png';
includeBack: boolean; // 是否导出背面
namingPattern: string; // 文件命名模式
}
```
---
## 5. 核心算法
### 5.1 中心对称生成算法
**输入:** 单张JQK人像图片
**输出:** 中心对称的人像图案
```
算法步骤:
1. 加载原始图片
2. 获取图片高度 height
3. 计算分割点midpoint = height / 2
4. 创建上半部分:
- 从原始图片裁剪 [0, 0, width, midpoint]
5. 创建下半部分:
- 从原始图片裁剪 [0, midpoint, width, midpoint]
- 垂直翻转scaleY = -1
6. 创建新画布,高度 = midpoint * 2
7. 将上半部分绘制到画布顶部
8. 将翻转后的下半部分绘制到画布底部
9. 返回中心对称图案
```
**Fabric.js实现伪代码**
```javascript
function createSymmetricalImage(originalImage) {
const width = originalImage.width;
const height = originalImage.height;
const halfHeight = height / 2;
// 创建上半部分
const topHalf = new fabric.Image(originalImage, {
clipPath: new fabric.Rect({
width: width,
height: halfHeight,
originX: 'left',
originY: 'top'
})
});
// 创建下半部分并翻转
const bottomHalf = new fabric.Image(originalImage, {
top: halfHeight,
scaleY: -1,
clipPath: new fabric.Rect({
width: width,
height: halfHeight,
originX: 'left',
originY: 'top'
})
});
// 组合成最终图案
const group = new fabric.Group([topHalf, bottomHalf]);
return group;
}
```
### 5.2 数字牌花色排列算法
**输入:** 点数1-10、花色图案、牌面尺寸
**输出:** 花色图案的位置数组
```javascript
const LAYOUT_TEMPLATES = {
1: [{ x: 0.5, y: 0.5 }], // A
2: [{ x: 0.5, y: 0.25 }, { x: 0.5, y: 0.75 }],
3: [{ x: 0.5, y: 0.2 }, { x: 0.5, y: 0.5 }, { x: 0.5, y: 0.8 }],
4: [{ x: 0.3, y: 0.25 }, { x: 0.7, y: 0.25 },
{ x: 0.3, y: 0.75 }, { x: 0.7, y: 0.75 }],
5: [{ x: 0.3, y: 0.2 }, { x: 0.7, y: 0.2 },
{ x: 0.5, y: 0.5 },
{ x: 0.3, y: 0.8 }, { x: 0.7, y: 0.8 }],
// ... 6-10的布局
};
function calculateSuitPositions(rank, cardWidth, cardHeight, symbolSize) {
const template = LAYOUT_TEMPLATES[rank];
return template.map(pos => ({
x: pos.x * cardWidth - symbolSize / 2,
y: pos.y * cardHeight - symbolSize / 2
}));
}
```
---
## 6. 用户交互流程
### 6.1 首次使用流程
```
用户打开应用
欢迎页面:选择模板系列
├─ 经典风格
├─ 现代简约
├─ 卡通风格
├─ 复古风格
└─ 自定义
进入设计编辑器(加载模板默认素材)
用户可立即预览54张牌面
开始上传自定义素材(可选)
实时预览更新
导出PNG
```
### 6.2 素材上传流程
```
用户点击"上传"按钮
文件选择对话框
选择文件(验证格式和尺寸)
文件读取为Base64或Blob
存储到IndexedDB
更新项目配置
触发重新渲染
画布实时更新
```
### 6.3 导出流程
```
用户点击"导出"按钮
导出设置对话框:
- 选择范围(单张/批量)
- 选择分辨率
- 是否包含背面
用户确认
显示进度条
遍历需要导出的牌:
- 创建临时Canvas
- 按图层渲染
- 应用分辨率
- 生成PNG Blob
打包为ZIP批量导出
触发下载
完成提示
```
---
## 7. 性能优化
### 7.1 渲染优化
- **虚拟滚动:** 底部54张牌缩略图使用虚拟滚动
- **懒加载:** 切换到某张牌时才完整渲染
- **缓存:** 已渲染的牌面缓存到内存
- **防抖:** 快速切换牌时不立即渲染等待300ms
### 7.2 导出优化
- **并行导出:** 使用Web Worker并行生成PNG
- **分批处理:** 大批量导出时分批进行,避免内存溢出
- **进度反馈:** 实时显示导出进度
### 7.3 存储优化
- **压缩:** 上传的图片压缩后再存储
- **IndexedDB** 大文件使用IndexedDB而非localStorage
- **清理:** 提供清理缓存功能
---
## 8. 扩展性设计
### 8.1 模板扩展
系统支持添加新模板,只需创建模板配置文件:
```javascript
// templates/custom.js
export default {
id: 'custom',
name: '自定义模板',
defaultAssets: { ... },
colorScheme: { ... }
};
```
### 8.2 布局扩展
数字牌布局模板可配置,支持非标准玩法:
```javascript
// 自定义布局
const customLayout = {
1: [{ x: 0.5, y: 0.5 }],
// ... 自定义位置
};
```
### 8.3 导出格式扩展
未来可扩展支持:
- PDF导出整副牌
- SVG矢量格式
- 打印店对接格式
---
## 9. 测试策略
### 9.1 单元测试
- 中心对称生成算法
- 布局计算算法
- 文件命名规则
- 数据结构验证
### 9.2 集成测试
- 素材上传流程
- 导出流程
- 模板加载流程
### 9.3 视觉测试
- 54张牌面渲染正确性
- 中心对称效果验证
- 不同分辨率导出质量
---
## 10. 项目约束
### 10.1 技术约束
- 纯前端,无后端依赖
- 浏览器兼容Chrome 90+, Firefox 88+, Safari 14+
- 最大图片尺寸4096×4096px
- 最大项目数量:本地存储限制
### 10.2 设计约束
- 牌面比例固定2.5:3.5(标准扑克牌比例)
- JQK必须中心对称
- 数字牌花色排列遵循标准模板
- 导出格式仅支持PNG
### 10.3 性能约束
- 单张牌渲染时间:<100ms
- 批量导出54张<30秒
- 图片上传响应:<500ms
---
## 11. 未来增强
### 11.1 短期增强
- 撤销/重做功能
- 复制/粘贴样式
- 对齐辅助线
- 网格显示
### 11.2 中期增强
- 云端存储(需后端)
- 项目分享功能
- 协作编辑
- 更多模板
### 11.3 长期增强
- AI辅助设计
- 自动配色建议
- 3D预览
- AR预览
---
## 附录:标准扑克牌尺寸参考
| 类型 | 尺寸 | 用途 |
|------|------|------|
| 标准 | 2.5" × 3.5" (63.5×88.9mm) | 常见扑克牌 |
| 桥牌 | 2.25" × 3.5" (57×88.9mm) | 桥牌用牌 |
| 大号 | 3" × 4.5" (76.2×114.3mm) | 魔术表演 |
| 迷你 | 1.75" × 2.5" (44.5×63.5mm) | 旅行便携 |
**像素尺寸300 DPI**
- 标准750×1050px
- 高清600 DPI1500×2100px
- 超高清1200 DPI3000×4200px