Initial commit - DesignerCEP Project with Caddy deployment

This commit is contained in:
zuowei1216
2025-12-19 21:27:17 +08:00
commit 8ea58fe480
170 changed files with 47469 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
# psmark 脚本分析与功能报告
## 1. 概述
`psmark` 目录下发现的 `JSX*.py` 文件JSX2.py - JSX9.py主要承担了**Photoshop 自动化脚本容器**的角色。
这些 Python 文件本身不包含图像处理逻辑,而是作为 Adobe ExtendScript (JSX) 代码的“包装壳”。所有的核心自动化逻辑(如图层操作、裁片缩放、排版等)都由嵌入的 JSX 字符串实现。
## 2. 文件功能详细清单
| 文件名 | 核心功能 | 详细描述 |
| :----------- | :-------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **JSX2.py** | **裁片射出宽高缩放** | - 遍历文档图层,根据图层名称(包含尺寸信息)进行精确缩放。<br>- 包含像素与毫米的自动换算。<br>- 处理 90 度/180 度 旋转逻辑。<br>- 使用 `ActionManager` 进行高效的选区和变换操作。 |
| **JSX3.py** | **设置花样组顺序居中** | - 专用于印花对位。<br>- 自动识别 "P" 开头的花样图层。<br>- 将花样层对齐到“大货裁片”组的中心位置。<br>- 包含蒙版选区获取和坐标计算逻辑。 |
| **JSX4.py** | **图像切割** | - 根据特定图层的边界对文档进行裁剪。<br>- 包含出血/边距处理(例如自动从选区扩展一定像素)。<br>- 适用于从大图中提取独立裁片。 |
| **JSX5.py** | **图像切割 (变体)** | - 功能与 JSX4 类似,侧重于特定图层组的裁剪和蒙版应用。 |
| **JSX6.py** | **裁片射出宽高缩放 (变体)** | - 与 JSX2 类似,提供裁片缩放和定位功能。<br>- 强调了“前景色修改”和“图层选择”等辅助操作。 |
| **JSX7.py** | **裁片射出缩放模板** | - **关键特性**:引入了“**缩放定位点**”图层概念。<br>- 不以图层中心为原点,而是根据“缩放定位点”图层的选区中心进行缩放变换。<br>- 包含 `烧花线添加` 功能,用于绘制剪口和标记线。 |
| **JSX8.py** | **批量化替换外链新 (UI)** | - **全自动化工作流脚本**。<br>- **内置 UI**:包含一个 ScriptUI 编写的对话框,用于选择文件夹路径。<br>- **功能**<br> 1. 批量打开文件。<br> 2. 自动替换智能对象链接(换花型)。<br> 3. `码标添加`:自动生成包含文件名的尺寸标记。<br> 4. `花样标准化`:统一花样大小并添加白底。<br> 5. 自动另存为 TIF 格式并归档。 |
| **JSX9.py** | **按中心点比例缩放** | - 结合了 JSX2 和 JSX7 的特性。<br>- 专注于按“缩放定位点”进行**等比例**或**宽高独立**缩放。<br>- 包含详细的 `ActionManager` 变换代码(`transform` 命令)。 |
| **JSX16.py** | **花样图层导出** | - 遍历图层组(特别是“填充底图”),将子图层导出为 TIF。<br>- 处理“最大白边值”图层以确定裁剪边界。<br>- 包含智能对象转换、重新链接、蒙版合并等复合操作。 |
| **JSX17.py** | **定位码批量快速换图 (UI)** | - **带 ScriptUI**。<br>- 全自动批量流程:选择模板路径、素材路径、输出路径。<br>- 遍历素材图片,打开模板,替换智能对象(`placedLayerRelinkToFile`),应用预设图案填充,合并图层并另存。<br>- 支持读取 JSON 数据来匹配图案名称。 |
| **JSX18.py** | **龙服快速换图 (UI)** | - **带 ScriptUI**(定制版本)。<br>- 读取文件夹文件列表,允许用户在 UI 中输入“数量”信息。<br>- 根据输入信息更新图层文本内容,替换裁片智能对象链接,合并并保存。 |
| **JSX19.py** | **裁片抓取与导入** | - 批量置入 PDF 文件。<br>- **自动旋转特性**:通过解析文件名(如包含 `_180`)自动判断是否需要旋转 180 度导入。<br>- 自动建立“大货裁片”组并归档。 |
| **JSX20.py** | **混合裁片导出** | - 遍历包含“大货裁片”名称的图层组。<br>- 逐个提取子图层,应用蒙版,裁切到边界,导出为 TIF 文件。<br>- 使用历史记录回退(`historyState`)来恢复状态以处理下一个图层。 |
| **JSX21.py** | **裁片排版基础** | - 基础排版功能库。<br>- `创建裁片排版文档`:按毫米创建新画布。<br>- `置入链接的智能对象`:将外部文件作为链接对象置入。<br>- `裁片排版_lay`:提供基于毫米坐标的精确位移功能。 |
| **JSX22.py** | **模特换衣功能 (UI)** | - **带 ScriptUI**。<br>- 针对模特展示图的批量替换。<br>- 遍历素材目录,替换模板中名为“替换对象”的智能对象。<br>- 支持保持原始目录结构导出支持切片导出Web 切片)。 |
| **JSX23.py** | **S/O 样自动连晒 (UI)** | - **带 ScriptUI**。<br>- 自动生成连晒(米样)效果。<br>- 将图片定义为图案,填充到指定宽高的文档中(平铺),并添加对应的文件名文字标签。<br>- 保存两份:一份纯拼贴,一份带文字标签。 |
| **JSX24.py** | **自动米样拼贴 (UI)** | - **带 ScriptUI**。<br>- 与 JSX23 类似但逻辑不同,这是真正的**拼图**Collage。<br>- 读取文件夹所有图片,按高度排序。<br>- 自动计算总画布大小,将图片紧凑排列(换行逻辑)拼贴到一个大文档中。 |
| **JSX26.py** | **模特多色换图** | - 利用**快照**Snapshot机制进行批量处理。<br>- 遍历文件夹素材,替换“贴图位置”组内的图层内容。<br>- 支持对替换后的图案进行位移Offset以制作不同花位效果。<br>- 导出 TIF 后回退到快照状态。 |
| **JSX27.py** | **新的米样缩放 (UI)** | - **带 ScriptUI**。<br>- 批量调整图片尺寸到指定的厘米数Resize Image。<br>- 随后进行画布扩展和文字标签添加,用于制作标准化的缩放样图。 |
## 3. 技术架构特点
### 3.1 Python 包装器模式
实际上是“伪 Python”代码。
```python
# 典型结构
dxf7_jscode = """
function 核心功能() {
// 实际的 ExtendScript (JavaScript) 代码
var doc = app.activeDocument;
...
}
"""
```
这种结构是为了便于 Python 后端(可能是旧的自动化系统)直接将 JS 代码发送给 Photoshop 执行。迁移时应直接提取 `"""` 内部的内容。
### 3.2 ActionManager (AM) 代码
脚本极度依赖 Photoshop 的底层 ActionManager API`executeAction`, `ActionDescriptor`)。
- **优点**:执行速度快,能实现 DOM API普通 JS 对象)无法实现的功能(如“再次变换”、“应用图层样式”、“特定算法的选区运算”)。
- **缺点**:代码可读性差,维护难度大(充斥着 `stringIDToTypeID`)。
### 3.3 命名约定
脚本逻辑强依赖于图层和组的命名规范:
- `P...`:识别为花样图层。
- `-大货裁片`:识别为标准的裁片组模板。
- `缩放定位点`:用于计算变换中心的辅助图层。
- `_` 分隔符:用于从图层名中提取尺寸参数(如 `名称_宽度_高度`)。
## 4. 迁移与集成建议 (DesignerCEP)
为了将这些资产整合到当前的 `DesignerCEP` (Vue + TypeScript + CEP) 项目中,建议采取以下步骤:
1. **代码提取 (Extract)**
- 废弃 `.py` 文件。
- 将字符串内的 JS 代码提取并在 `src/jsx/` 目录下建立对应的 `.jsx` 文件(建议按功能重命名,如 `ResizeUtils.jsx`, `BatchProcess.jsx`)。
2. **模块化重构 (Refactor)**
- 原脚本大量使用全局变量,容易造成污染。需要将其封装为独立的函数,例如 `function scaleLayerByAnchor(layerName, anchorLayerName) { ... }`
- 将通用的 `ActionManager` 辅助函数(如 `executeAction` 的封装)移动到统一的工具库中。
3. **UI 重写 (Modernize UI)**
- **重点**`JSX8.py` 中的 ScriptUI 弹窗(灰色原生界面)应完全废弃。
- 使用 **Vue + Element Plus/Arco Design** 重写批量处理界面。
- 前端收集用户输入的路径和选项,通过 `cep.ts` 桥接层传递给 JSX 执行核心逻辑。
4. **功能桥接 (Bridge)**
-`src/jsx/index.ts` 中暴露新的接口,供前端调用。
- 例如:`canvas_cut_image` (对应 JSX4), `auto_resize_layer` (对应 JSX2)。