Files
DP/tempdocs/psmark脚本分析报告.md

12 KiB
Raw Blame History

psmark 脚本分析与功能报告

1. 概述

psmark 目录下发现的 JSX*.py 文件JSX2.py - JSX9.py主要承担了Photoshop 自动化脚本容器的角色。 这些 Python 文件本身不包含图像处理逻辑,而是作为 Adobe ExtendScript (JSX) 代码的“包装壳”。所有的核心自动化逻辑(如图层操作、裁片缩放、排版等)都由嵌入的 JSX 字符串实现。

2. 文件功能详细清单

文件名 核心功能 详细描述
JSX2.py 裁片射出宽高缩放 - 遍历文档图层,根据图层名称(包含尺寸信息)进行精确缩放。
- 包含像素与毫米的自动换算。
- 处理 90 度/180 度 旋转逻辑。
- 使用 ActionManager 进行高效的选区和变换操作。
JSX3.py 设置花样组顺序居中 - 专用于印花对位。
- 自动识别 "P" 开头的花样图层。
- 将花样层对齐到“大货裁片”组的中心位置。
- 包含蒙版选区获取和坐标计算逻辑。
JSX4.py 图像切割 - 根据特定图层的边界对文档进行裁剪。
- 包含出血/边距处理(例如自动从选区扩展一定像素)。
- 适用于从大图中提取独立裁片。
JSX5.py 图像切割 (变体) - 功能与 JSX4 类似,侧重于特定图层组的裁剪和蒙版应用。
JSX6.py 裁片射出宽高缩放 (变体) - 与 JSX2 类似,提供裁片缩放和定位功能。
- 强调了“前景色修改”和“图层选择”等辅助操作。
JSX7.py 裁片射出缩放模板 - 关键特性:引入了“缩放定位点”图层概念。
- 不以图层中心为原点,而是根据“缩放定位点”图层的选区中心进行缩放变换。
- 包含 烧花线添加 功能,用于绘制剪口和标记线。
JSX8.py 批量化替换外链新 (UI) - 全自动化工作流脚本
- 内置 UI:包含一个 ScriptUI 编写的对话框,用于选择文件夹路径。
- 功能
1. 批量打开文件。
2. 自动替换智能对象链接(换花型)。
3. 码标添加:自动生成包含文件名的尺寸标记。
4. 花样标准化:统一花样大小并添加白底。
5. 自动另存为 TIF 格式并归档。
JSX9.py 按中心点比例缩放 - 结合了 JSX2 和 JSX7 的特性。
- 专注于按“缩放定位点”进行等比例宽高独立缩放。
- 包含详细的 ActionManager 变换代码(transform 命令)。
JSX16.py 花样图层导出 - 遍历图层组(特别是“填充底图”),将子图层导出为 TIF。
- 处理“最大白边值”图层以确定裁剪边界。
- 包含智能对象转换、重新链接、蒙版合并等复合操作。
JSX17.py 定位码批量快速换图 (UI) - 带 ScriptUI
- 全自动批量流程:选择模板路径、素材路径、输出路径。
- 遍历素材图片,打开模板,替换智能对象(placedLayerRelinkToFile),应用预设图案填充,合并图层并另存。
- 支持读取 JSON 数据来匹配图案名称。
JSX18.py 龙服快速换图 (UI) - 带 ScriptUI(定制版本)。
- 读取文件夹文件列表,允许用户在 UI 中输入“数量”信息。
- 根据输入信息更新图层文本内容,替换裁片智能对象链接,合并并保存。
JSX19.py 裁片抓取与导入 - 批量置入 PDF 文件。
- 自动旋转特性:通过解析文件名(如包含 _180)自动判断是否需要旋转 180 度导入。
- 自动建立“大货裁片”组并归档。
JSX20.py 混合裁片导出 - 遍历包含“大货裁片”名称的图层组。
- 逐个提取子图层,应用蒙版,裁切到边界,导出为 TIF 文件。
- 使用历史记录回退(historyState)来恢复状态以处理下一个图层。
JSX21.py 裁片排版基础 - 基础排版功能库。
- 创建裁片排版文档:按毫米创建新画布。
- 置入链接的智能对象:将外部文件作为链接对象置入。
- 裁片排版_lay:提供基于毫米坐标的精确位移功能。
JSX22.py 模特换衣功能 (UI) - 带 ScriptUI
- 针对模特展示图的批量替换。
- 遍历素材目录,替换模板中名为“替换对象”的智能对象。
- 支持保持原始目录结构导出支持切片导出Web 切片)。
JSX23.py S/O 样自动连晒 (UI) - 带 ScriptUI
- 自动生成连晒(米样)效果。
- 将图片定义为图案,填充到指定宽高的文档中(平铺),并添加对应的文件名文字标签。
- 保存两份:一份纯拼贴,一份带文字标签。
JSX24.py 自动米样拼贴 (UI) - 带 ScriptUI
- 与 JSX23 类似但逻辑不同,这是真正的拼图Collage
- 读取文件夹所有图片,按高度排序。
- 自动计算总画布大小,将图片紧凑排列(换行逻辑)拼贴到一个大文档中。
JSX26.py 模特多色换图 - 利用快照Snapshot机制进行批量处理。
- 遍历文件夹素材,替换“贴图位置”组内的图层内容。
- 支持对替换后的图案进行位移Offset以制作不同花位效果。
- 导出 TIF 后回退到快照状态。
JSX27.py 新的米样缩放 (UI) - 带 ScriptUI
- 批量调整图片尺寸到指定的厘米数Resize Image
- 随后进行画布扩展和文字标签添加,用于制作标准化的缩放样图。

3. 技术架构特点

3.1 Python 包装器模式

实际上是“伪 Python”代码。

# 典型结构
dxf7_jscode = """
function 核心功能() {
    // 实际的 ExtendScript (JavaScript) 代码
    var doc = app.activeDocument;
    ...
}
"""

这种结构是为了便于 Python 后端(可能是旧的自动化系统)直接将 JS 代码发送给 Photoshop 执行。迁移时应直接提取 """ 内部的内容。

3.2 ActionManager (AM) 代码

脚本极度依赖 Photoshop 的底层 ActionManager APIexecuteAction, 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)。