惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
博客园 - Franky
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
博客园 - 司徒正美
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
博客园_首页
S
SegmentFault 最新的问题
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
H
Help Net Security
MongoDB | Blog
MongoDB | Blog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
LayerRenamer 1.0 发布,PS 图层重命名从未如此简单 - 少数派
2024-09-11 · via 少数派

引言

平面设计在使用 Photoshop 处理图层数较多的 .psd 文件时,挨个对图层重命名是非常繁琐耗时的工作。

上网搜了一下,各大网站要么需要安装对应版本的插件,要么脚本发布日期久远,且非常暴力的把所有图层全部重命名了。Photoshop 发展了这么多年,居然一直没加入这样简洁高效的功能,也是匪夷所思。

以下是网上广为流传的版本,供参考。

i++app.bringToFront();
var YourName = prompt("请输入您需要重命名的图层名称",'请输入')
if (documents.length == 0) {
    alert("没有图层");
}
else {
    var visibility = false; 
    var docRef = activeDocument;     
        changeLayerName(docRef);
}

function changeLayerName(layer){

    var layers = layer.layers;

    if(layers){

    for(var i = 0; i < layers.length; i ++){
        layers[i].name = YourName + [i];
        changeLayerName(layers[i]);
    }
}
}

也不是不能用,但我所需的功能是

  • 仅对当前选中的图层进行修改。
  • 图层可支持任意层级。
  • 可为这些图层添加编号后缀。
  • 最好能够同时对图层的“color tag”颜色标签进行修改。

制作步骤

使用文本编辑器创建新的文本文件,将以下代码粘贴进去,能够借助 Adobe Photoshop 2023 的脚本功能来实现图层的批量重命名。

此脚本能够对当前文档中所有被选中的图层进行遍历,同时会提示用户输入自定义的图层名称和编号格式,接着按照用户指定的格式为各个图层进行命名。并且,脚本会自动处理图层是否处在图层组当中的情况。

#target photoshop
app.bringToFront();

if (app.documents.length === 0) {
    alert("没有打开的文档。");
    throw new Error("No document open.");
}

var doc = app.activeDocument;

var selectedLayers = getSelectedLayers();
if (selectedLayers.length === 0) {
    alert("没有选中的图层。");
    throw new Error("No layers selected.");
}

var baseName = prompt("请输入基础图层名称:", "Layer");
var startNumber = parseInt(prompt("请输入编号的起始值:", "1"), 10);
var numberFormat = prompt("请输入编号格式(例如 001,保持编号位数):", "001");

if (isNaN(startNumber) || !baseName || !numberFormat) {
    alert("输入无效,请重新运行脚本。");
    throw new Error("Invalid input.");
}

renameLayers(selectedLayers, baseName, startNumber, numberFormat);

function getSelectedLayers() {
    var selectedLayers = [];
    var ref = new ActionReference();
    ref.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
    var desc = executeActionGet(ref);

    if (desc.hasKey(stringIDToTypeID('targetLayers'))) {
        var targetLayers = desc.getList(stringIDToTypeID('targetLayers'));
        for (var i = 0; i < targetLayers.count; i++) {
            var layerIndex = targetLayers.getReference(i).getIndex();
            selectedLayers.push(getLayerByIndex(layerIndex + 1)); 
        }
    } else {
        selectedLayers.push(doc.activeLayer);
    }
    return selectedLayers;
}

function getLayerByIndex(index) {
    var ref = new ActionReference();
    ref.putIndex(charIDToTypeID("Lyr "), index);
    var desc = executeActionGet(ref);
    var layerID = desc.getInteger(stringIDToTypeID("layerID"));
    return getLayerById(layerID);
}

function getLayerById(id) {
    var ref = new ActionReference();
    ref.putIdentifier(charIDToTypeID("Lyr "), id);
    var desc = executeActionGet(ref);
    return doc.layers.getByName(desc.getString(charIDToTypeID("Nm  ")));
}

function renameLayers(layers, baseName, startNumber, numberFormat) {
    for (var i = 0; i < layers.length; i++) {
        var currentNumber = (startNumber + i).toString();
        var formattedNumber = zeroPad(currentNumber, numberFormat.length);
        var newName = baseName + formattedNumber;
        layers[i].name = newName;
    }
}

function zeroPad(num, width) {
    while (num.length < width) {
        num = '0' + num;
    }
    return num;
}

上述代码成功实现了基础的图层重命名以及编号排序的功能。将文件保存为名称为 xxx.jsx 的脚本文件即可。

使用步骤:

  1. 打开 Adobe Photoshop 2023。
  2. 选择要重命名的图层(可以在图层面板中多选,支持嵌套在图层组中的图层)。
  3. 进入 文件 -> 脚本 -> 浏览...,选择你保存的脚本文件。
  4. 执行脚本后,会出现三个提示框:
     
  • 第一个提示框要求输入基础图层名称,例如 "Layer"。
  • 第二个提示框要求输入编号的起始值,例如 "1"。
  • 第三个提示框要求输入编号格式,例如 "001",确保编号保持一致的位数。
  • 选择确认后,脚本会自动按照你设定的格式重命名所选图层。

进阶版

以上功能基本够用了,如果需要加入同时修改颜色标签可下载进阶版。 效果如下所示:

下载链接:

【LayerRenamer_PS-2023.jsx】

https://16b87ca7d6.znas.cn/AppH5/share/?nid=LIYDEMJQGBBDEOCELBIFU&code=r1DtQDtFZobo1ai8Jd0UylatvnNkQ3xcodyiJBPo4ejLcOfybeyVGW0o3LOTKTHF&mode=file&display=list 

有效期 7 天,提取密码:6633

本文首发在少数派