【ai】蛐蛐下deepseek+photoshop 脚本操作的失败经历

参考

在成功使用

deepseek+豆包+kimi = ppt

deepseek+vscode 代码助手(自动写代码,原项目自带验证和热启动,未加入单元测试)

deepseek+canvas可画 = 海报

之后准备尝试一下deepseek+ps自动化脚本修图~

首先在deepseek里要求photoshop的脚本代码:

提问:写一个photoshop的脚步,用于复制一个图层,抠图去掉背景,photoshop版本2020

然后deepseek经过深度思考🤔给出了代码:

// Photoshop 2020专用抠图脚本
// Save as "CopyAndRemoveBG.jsx"

#target photoshop

try {
    // 检查文档状态
    if (app.documents.length < 1) {
        throw new Error("请先打开图像文件");
    }
    
    var doc = app.activeDocument;
    var originalLayer = doc.activeLayer;
    
    // 创建副本图层
    var copiedLayer = originalLayer.duplicate();
    copiedLayer.name = originalLayer.name + "_抠图版";
    
    // 执行智能选区(兼容2020版)
    if (doc.selection && typeof doc.selection.selectSubject === 'function') {
        doc.selection.selectSubject();  // 2020版支持的核心AI功能
    } else {
        // 备用选区方案
        app.runMenuItem(stringIDToID('autoSelectionTool')); // 触发自动选择工具
    }
    
    // 选区优化设置
    doc.selection.contract(1);    // 收缩1像素
    doc.selection.feather(0.8);   // 羽化0.8像素
    
    // 添加图层蒙版
    var maskResult = copiedLayer.addMask();
    
    // 转换为透明背景
    doc.selection.invert();
    copiedLayer.applyMask(maskResult);  // 应用蒙版
    doc.selection.deselect();
    
    // 结果提示
    alert("抠图完成!已创建新图层: " + copiedLayer.name);

} catch(e) {
    alert("执行错误: " + e.message + "\n行号: " + e.line);
}

还提示了 我要保存成jsx文件,并ps打开图片“文件-脚本-浏览”选脚本文件打开即可。

本来😏

按照以上步骤运行代码,ps报错,显示stringIDToID不是函数

于是我在deepseek中继续提问报错该如何解决……

然而,deepseek一贯的神回复来了🐑

多次操作无果

……

转向豆包编程助手

包包很快给出了修正的代码

try {
    // 获取当前活动文档
    var doc = app.activeDocument;

    // 获取当前选中的图层
    var currentLayer = doc.activeLayer;

    // 确保当前图层不是背景图层,因为背景图层不能直接编辑
    if (currentLayer.kind == LayerKind.BACKGROUND) {
        currentLayer = currentLayer.duplicate(); // 复制背景图层以使其成为普通图层
        doc.activeLayer = currentLayer; // 激活新复制的图层
    }

    // 选择当前图层的所有像素
    currentLayer.select();

    // 创建一个新的图层蒙版
    var layerMask = currentLayer.addVectorMask();

    // 使用魔术棒工具选择背景(假设背景是单一颜色或易于选择的)
    // 由于直接用 getByName 可能在某些环境有问题,这里使用字符串 ID 操作
    var magicWandDesc = new ActionDescriptor();
    var magicWandRef = new ActionReference();
    magicWandRef.putString(stringIDToID("tool"), stringIDToID("magicWandTool"));
    magicWandDesc.putReference(stringIDToID("null"), magicWandRef);
    executeAction(stringIDToID("selectTool"), magicWandDesc, DialogModes.NO);

    // 设置魔术棒工具参数
    var tolerance = 32; // 设置容差以适应背景颜色的变化
    var contiguous = true; // 只选择连续区域
    var selectDesc = new ActionDescriptor();
    selectDesc.putUnitDouble(stringIDToID("tolerance"), stringIDToID("unitless"), tolerance);
    selectDesc.putBoolean(stringIDToID("contiguous"), contiguous);
    executeAction(stringIDToID("magicWand"), selectDesc, DialogModes.NO);

    // 反转选择,以便选择前景而不是背景
    doc.selection.invert();

    // 将选择应用于图层蒙版
    var path = doc.pathItems.add();
    var points = [];
    var bounds = doc.selection.bounds;
    points.push({ anchor: [bounds[0], bounds[1]], leftDirection: [bounds[0], bounds[1]], rightDirection: [bounds[0], bounds[1]] });
    points.push({ anchor: [bounds[2], bounds[1]], leftDirection: [bounds[2], bounds[1]], rightDirection: [bounds[2], bounds[1]] });
    points.push({ anchor: [bounds[2], bounds[3]], leftDirection: [bounds[2], bounds[3]], rightDirection: [bounds[2], bounds[3]] });
    points.push({ anchor: [bounds[0], bounds[3]], leftDirection: [bounds[0], bounds[3]], rightDirection: [bounds[0], bounds[3]] });
    path.points = points;
    path.closed = true;
    layerMask.initFromPath(path);
    path.remove();

    // 清除选择
    doc.selection.deselect();

    // 保存文档(可选)
    // doc.saveAs(new File("/path/to/save/your/image.png"), SaveOptions.PNG, true);

    alert("抠图并删除背景完成!");
} catch (e) {
    alert('过程中:' + e.message);
}

再次尝试

……

然后又试了多次,经过createMask,addMask不是函数,stringIDToID自定义函数报非法参数,charIDToTypeID非法参数

等等~

期间deepseek短暂walkup,给了个修正案:

// Photoshop 2020兼容版抠图脚本
// 保存为"CopyAndRemoveBG_PS2020.jsx"

#target photoshop

try {
    // ========== 初始化检查 ==========
    if (app.documents.length < 1) {
        throw new Error("请打开一个图像文件");
    }
    
    var doc = app.activeDocument;
    var originalLayer = doc.activeLayer;
    
    // ========== 创建副本图层 ==========
    var idDplc = charIDToTypeID("Dplc");
    var desc = new ActionDescriptor();
    desc.putReference(charIDToTypeID("null"), charIDToTypeID("Lyr "), originalLayer);
    executeAction(idDplc, desc, DialogModes.NO);
    var copiedLayer = doc.activeLayer;
    copiedLayer.name = originalLayer.name + "_抠图版";
    
    // ========== 智能选区核心逻辑 ==========
    if (typeof doc.selection.selectSubject === 'function') {
        // PS2020支持的AI选择主体
        doc.selection.selectSubject();
    } else {
        // 传统自动选区方案
        var idAuto = charIDToTypeID("AuTl"); // 自动选择工具
        var desc = new ActionDescriptor();
        desc.putEnumerated(charIDToTypeID("TlFn"), charIDToTypeID("TlFn"), idAuto);
        executeAction(charIDToTypeID("Slct"), desc, DialogModes.NO);
    }
    
    // ========== 选区优化 ==========
    doc.selection.contract(1);    // 收缩1像素
    doc.selection.feather(0.8);   // 羽化0.8像素
    
    // ========== 创建蒙版 ==========
    var idMk = charIDToTypeID("Mk  ");
    var desc = new ActionDescriptor();
    desc.putClass(charIDToTypeID("Nw  "), charIDToTypeID("Chnl"));
    desc.putEnumerated(charIDToTypeID("At  "), charIDToTypeID("Chnl"), charIDToTypeID("Msk "));
    executeAction(idMk, desc, DialogModes.NO);
    
    // ========== 清理选区 ==========
    doc.selection.deselect();
    
    // ========== 消除边缘杂色 ==========
    var idDfrn = charIDToTypeID("Dfrn");
    var desc = new ActionDescriptor();
    desc.putUnitDouble(charIDToTypeID("Rds "), charIDToTypeID("#Pxl"), 1);
    executeAction(idDfrn, desc, DialogModes.NO);
    
    alert("操作成功!已创建抠图层:" + copiedLayer.name);

} catch(e) {
    alert("错误发生在行:" + e.line + "\n错误信息:" + e.message);
}

依旧报错,追问,再次服务繁忙……

不知道有没有人操作成功

### 如何运行 DeepSeek 脚本 为了运行 DeepSeek 脚本,首先需要确保已经成功安装并配置好了所需的环境。对于 DeepSeek 的部署和使用,可以通过多种方式实现。 #### 部署 DeepSeek 模型 如果选择通过 `ollama` 来运行 DeepSeek R1 版本,则可以参照如下 Bash 脚本来处理大文件下载过程中可能出现的速度减缓问题: ```bash #!/bin/bash # 无限循环,直到模型下载完成 while true; do # 检查模型是否已下载完成 if ollama list | grep -q "deepseek-r1:1.5b"; then echo "模型已下载完成!" break fi # 启动 ollama 进程并记录进程ID echo "开始下载模型..." ollama run deepseek-r1:1.5b & # 获取 ollama 进程的 PID pid=$! # 等待60秒 sleep 60 # 终止正在运行的进程 if ps -p $pid > /dev/null; then kill -9 $pid echo "已中断本次下载,准备重新尝试..." else echo "进程已结束,无需中断。" fi done ``` 这段脚本会持续监控模型下载状态,在每次等待60秒后自动终止当前下载任务,并在必要时重启新的下载过程,直至整个模型完全加载完毕[^3]。 #### 创建与执行 Photoshop 脚本 一旦 DeepSeek 已经准备好,就可以利用其能力来创建复杂的 Photoshop 脚本。用户只需提供清晰的任务描述,DeepSeek 就能解析这些自然语言输入并将它们转化为具体的编程逻辑或命令序列,从而自动生成相应的 Photoshop 扩展功能或自动化流程[^1]。 例如,假设想要调整一批图片的颜色饱和度,可以在界面中输入类似这样的请求:“请帮我制作一个Photoshop动作,用于批量增加JPEG图像中的颜色饱和度至最大。” 接下来,按照提示操作即可让 DeepSeek 自动生成满足需求的动作集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值