在 Photoshop 脚本中打开和关闭多个图层

2024-05-02

我在 Photoshop 中有 6 个组,每个组内包含多个图层。我希望打开/关闭每个组中的图层以创建图像的每种可能的组合。

有人能指出我正确的方向吗?

我从来没有在 Photoshop 中编写过脚本,而是尝试自己解决这个问题。


我自己对 CS5 脚本编写很陌生,但我想我可以解释它是如何工作的。代码示例可能不是最有效的方法,但它确实有效。

一组层或单个层本身之间存在很大差异。 所有层和组均以 DOM 格式排序。要获取根权限,您可以使用全局实例app获取活动文档:app.activeDocument.

混乱的部分是单层和组有两个单独的数组。 要获取单层数组,请使用app.activeDocument.layers and app.activeDocument.layerSets对于团体。

要深入层次结构,请使用 layerSets 数组向下迭代。

例如,让我们假设以下层次结构:

-Border
+Icons
   +Left
       -Star
       -Home
   +Right
       -Add
       -Remove

Here Border, Star, Home, Add and Remove都是单层,而Icons, Left and Right是团体。

开启群组Left我们需要迭代Icon group:

Icons = app.activeDocument.layerSets.getByName("Icons");
Left = Icons.layerSets.getByName("Left");
Left.visible = true;

如果您通过单击鼠标在 CS5 中显示图层/组,所有父组也会自动显示。通过编写脚本,情况并非如此,您还必须启用所有父母。

Icons = app.activeDocument.layerSets.getByName("Icons");
Icons.visible = true;
Left = Icons.layerSets.getByName("Left");
Left.visible = true;

要显示边框图层,您需要使用图层数组。

app.activeDocument.layers.getByName("Border").visible = true;

如果您想显示添加图层,同样的情况也适用。

Icons = app.activeDocument.layerSets.getByName("Icons");
Icons.visible = true;
Right = Icons.layerSets.getByName("Right");
Right.visible = true;
AddLayer = Right.layers.getByName("Add");
AddLayer.visible = true;

如果您有很多组和图层,这可能会有点混乱。我创建了一个函数,它遵循提供的路径来获取最终对象。它会自行确定它是一个图层还是一个组。

//******************************************
// GET BY PATH
// Author: Max Kielland
//
// Gets the LayerSet or Layer at the path's end.
// Example path "Icons/left" will return the LayerSet object "Left"
// while "Icons/left/Star" will return the Layer object "Star"
// If fSetPath is true, all the parents will be visible as well.

function GetByPath(fPath,fSetPath) {

  var lGroup = null;
  var lPathArray = new Array();

  lPathArray = fPath.split('/');
  try {
    lGroup = app.activeDocument.layers.getByName(lPathArray[0]);
  } catch (err) {
    lGroup = app.activeDocument.layerSets.getByName(lPathArray[0]);
  }

  if (fSetPath)
    lGroup.visible = true;

  for (n=1; n<lPathArray.length; n++) {
    try {
      lGroup = lGroup.layerSets.getByName(lPathArray[n]);
    } catch(err) {
      lGroup = lGroup.layers.getByName(lPathArray[n]);
    }
    if (fSetPath == true)
      lGroup.visible = true;
  }

  return lGroup;
}

...还有一个功能可以通过其路径简单地设置或清除组或图层。

//******************************************
// SET STATUS
// Author: Max Kielland
//
// Sets the Group or Layer's visible property
// at the end of the path to fStatus.

function SetStatus(fPath, fStatus) {

  Obj = GetByPath(fPath,false);
  Obj.visible = fStatus;
}

..最后我编写了这个函数来隐藏用户指定根目录中的所有组和/或层。

/******************************************
// CLEAR GROUP
// Author: Max Kielland
//
// Clears the visible property in a single
// group/layer with the option to clear all
// its children as well (fRecurs = true).
// fLayerSet can be a layerSet object or a
// String path.

function ClearGroup(fLayerSet,fRecurs) {

  var n;
  var TargetGroup;

  // Get LayerSet Object if reference is a string.
  if (typeof fLayerSet == "string")
    TargetGroup = GetByPath(fLayerSet);
  else
    TargetGroup = fLayerSet;

  // Iterate through all LayerSets
  for (n=0; n<TargetGroup.layerSets.length; n++) {
    if (fRecurs == true)
      ClearGroup(TargetGroup.layerSets[n],true);
    else
     TargetGroup.layerSets[n].visible = false;
  }

  // Iterate through all layers
  for (n=0; n<TargetGroup.layers.length; n++) {
    TargetGroup.layers[n].visible = false;
  }

  // Clear self
  TargetGroup.visible = false;
}

这是如何使用这些功能的示例

// Hide group "Icon" and its children
ClearGroup("Icons",true);

//Show the layer "Home"
GetByPath("Icons/Left/Home",true);

// To just get the object "Right"
var MyGroup = GetByPath("Icons/Right");

// Save the current document as a PNG file
app.activeDocument.saveAs(File("Scripted Document.png"),PNGSaveOptions);

我希望这对我以外的其他人有用:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Photoshop 脚本中打开和关闭多个图层 的相关文章

  • ai2022中文版(支持m1) ai2022mac版

    最新版本的Illustrator 2022 for Mac中文版已经更新啦 这是一款专业的矢量图形设计软件 这次的ai 2022 mac版新增和改进了不少功能 比如应用3D效果 支持使用Adobe Substance材质添加纹理 通过发现面
  • PS图层混合算法之六(差值,溶解, 排除)

    差值模式 查看每个通道中的颜色信息 比较底色和绘图色 用较亮的像素点的像素值减去较暗的像素点的像素值 与白色混合将使底色反相 与黑色混合则不产生变化 排除模式可生成和差值模式相似的效果 但比差值模式生成的颜色对比度较小 因而颜色较柔和 与白
  • 一个完整的产品设计都要哪些设计流程

    设计理念是抽象的 它描述了一个产品从概念到完成的一般过程 然而 真正的产品设计过程要复杂得多 也要具体得多 因此 我们将分解这个过程中最重要的部分 并给实践中使用的建议 1 设计前期 通常 设计过程的第一步在产品设计之前就已经开始了 这是因
  • ps2023如何导出svg

    在 文件 文件 导出首选项 里勾选 使用旧版导出为 就可以在图层里右键导出svg啦 否则切图也导不出svg 右键导出为里面的格式也没有svg选项 官方建议使用以下解决方案 https helpx adobe com photoshop us
  • Adobe XD for Mac v35.2.12 界面设计和原型交互工具

    Adobe XD for Mac 是一款优秀的界面设计和原型交互工具 用户可以进行移动应用和网页设计与原型制作 同时它也是唯一一款结合设计与建立原型功能 并同时提供工业级性能的跨平台设计产品 设计师使用Adobe XD可以更高效准确的完成静
  • PS解决“无法使用快速选择,因为没有足够内存(RAM)”

    PS解决 无法使用快速选择 因为没有足够内存 RAM win R打开命令行 在输入框输入 regedit 点击确定 找到目录HKEY CURRENT USER Software Adobe Photoshop 点击对应版本Photoshop
  • PhotoShop 之用画笔工具擦除

    最近看了一篇课程 使用渐变工具生成彩虹 并用画笔工具擦除部分图像 1 首先 为图像添加一个图层 2 用渐变工具生成彩虹渐变图像 3 添加图层蒙版 4 前景色设置为黑色 原先为红色 5 使用画笔工具 预设像素设置为150 6 使用画笔进行擦除
  • 注册adobe账号成功访问被拒绝

    安装photoshop2020后需要登录adobe账号 登录adobe账号成功但提示访问被拒绝 出现这种情况建议换个邮箱重新注册 而且国家注意不要选中国
  • 第17节-PhotoShop基础课程-画笔修复工具

    文章目录 前言 1 画笔工具 1 基本操作 2 工具选项 1 不透明度 2 流量 3 平滑 2 画笔大小工具栏大小设置 4 笔刷 2 铅笔工具 3 颜色替换工具 批量替换颜色 4 混合器画笔工具 人像精修 前言 画笔工具的使用 1 画笔工具
  • 翻页特效原理

    http www open open com lib view 1326265166952 实现真实的翻页效果 为了能在翻页的过程中看到下一页的内容 在翻页之前必须准备两张页面 一张是当前页 另一张是下一页 翻页的过程就是对这两张页面的剪切
  • DNG格式解析

    Author Maddock Date 2015 04 22 转载请注明出处 http www cnblogs com adong7639 p 4446828 html DNG格式基本概念 DNG格式是在TIFF的基础上扩展出来的 要了解D
  • Photoshop Javascript 获取活动文档中的所有图层

    我确信 Photoshop 脚本编写者之前应该讨论过这个问题 我写了一个解决方案如下 我认为逻辑上是对的 但结果却不对 任何人都可以帮助检查代码中的错误 或者对这个主题有想法吗 我想获取文档中的所有图层 Code function getA
  • 如何使用 Photoshop JavaScript 将文本写入文本文件?

    我看了一下Photoshop CS5 脚本编写指南和 Photoshop CS5 JavaScript 参考 http www adobe com devnet photoshop scripting html 但我找不到将文本写入纯文本文
  • Photoshop 沿 y 轴移动图层

    我正在编写一个脚本 该脚本将向右 向左 向上或向下移动图层 这取决于图层的哪个边缘位于画布内 我已经设法使用bounds 0 和bounds 2 使图层左右移动 x轴 但是当我尝试让它向上或向下移动时 它仍然向左 向右移动 难道是我的边界数
  • OpenCV 和像 Adob​​e Photoshop 一样的锐化遮罩

    我正在尝试像 Adob e Photoshop 中那样实现模糊遮罩 我在互联网上收集了很多信息 但我不确定我是否遗漏了一些东西 这是代码 void unsharpMask cv Mat img double amount double ra
  • Mac版 Photoshop 2021---PS2021

    Adobe Photoshop 2021是一款强大的图像处理软件 它可以帮助用户进行各种图像编辑 修饰和合成工作 这款软件拥有先进的图像处理技术 支持多种图像格式 可以轻松实现各种复杂的图像处理任务 它还提供了丰富的滤镜和工具 使用户可以自
  • 不带对话框窗口保存

    我正在尝试编写一个脚本来自动执行 Photoshop CS5 的许多操作 其中一部分涉及保存一堆文件 有没有一种方法可以在不打开对话框窗口的情况下保存文件 我一直在寻找JavaScript 工具指南 http wwwimages adobe
  • 如何为 1x1 Android 小部件创建清晰的背景图像?

    我正在创建一个 1x1 小部件 无论我尝试什么 我都无法让背景图像看起来漂亮且清晰 我已经阅读了几乎所有我能找到的资源 但我仍然无法获胜 我正在为 HTC Desire Nexus 1 进行设计 希望有人告诉我在 Photoshop 中创建
  • 什么是高通和低通滤波器?

    图形和音频编辑处理软件通常包含称为 高通滤波器 和 低通滤波器 的功能 它们到底有什么作用 以及实现它们的算法是什么 以下是使用卷积实现低通滤波器的方法 double signal some 1d signal double filter
  • 在 Photoshop 脚本中打开和关闭多个图层

    我在 Photoshop 中有 6 个组 每个组内包含多个图层 我希望打开 关闭每个组中的图层以创建图像的每种可能的组合 有人能指出我正确的方向吗 我从来没有在 Photoshop 中编写过脚本 而是尝试自己解决这个问题 我自己对 CS5

随机推荐

  • 如何更改图片框(winform)的边框颜色?

    我想根据不同的事件设置图片框周围的边框颜色 样式 是否有属性或功能可以帮助我实现该目标 我一直用的是这个 要更改边框颜色 请从PaintPicturebox 控件的事件处理程序 private void pictureBox1 Paint
  • 使用 global-method-security,访问被拒绝错误将作为 HTTP 500 错误返回

    我尝试使用 Spring Security Annotations 来确保安全 而不是在 XML 中定义规则 它似乎有效 但是当我遇到访问被拒绝错误时 我收到返回的 HTTP 状态代码 500 我在 tomcat 日志文件中没有看到任何异常
  • HttpURLConnection 发送图像、音频和视频文件,参数可以是(String 或 Json String)Android

    我正在分享solution发送一个image audio or a video带有参数的文件使用HttpURL连接 参数可以是 纯字符串或 JSON Android 客户端到 PHP 后端 设想 必须上传媒体文件 带参数的音频 视频和图像
  • 使用 keras.utils.Sequence 多处理和数据库 - 何时连接?

    我正在使用 Keras 和 Tensorflow 后端训练神经网络 数据集不适合 RAM 因此 我将其存储在 Mongo 数据库中并使用子类检索批次keras utils Sequence 一切正常 如果我跑的话model fit gene
  • 安卓卸载通知

    当用户卸载应用程序时有什么方法可以发送通知 如果用户卸载该应用程序 应用程序所有者应该收到以下用户已卸载该应用程序的通知 是否可以 应用程序本身不可能 除非有来自同一作者的其他应用程序可以检查 但我认为有一个可用但复杂的解决方法 应用程序可
  • 如何在 Microsoft bot 框架中仅使用图像的 base64 编码字符串显示图像?

    我尝试了下面的代码 这是我在模拟器中得到的输出 message Attachments Add new Attachment ContentUrl data image jpeg base64 xxxx 数据 uri 图像似乎有最大大小 但
  • Postgresql - 确定从级联删除中删除哪些记录

    我继承了一个相当大的 postgresql 数据库 我们有一个每月运行的作业 用于备份现有数据库并使用我们收到的更新的供应商数据创建一个新数据库 目前有一个小问题 在不深入了解表设置 数据建模内容等细节的情况下 我相信它可以通过简单的删除查
  • 将 char 数组转换为 hex 数组 (C++)

    我的问题是将字符数组转换为十六进制数字数组 我需要从字符数组中取出 2 个字符并将它们转换为一个十六进制数字 这是我的输入 unsigned char text 1024 06fb7405eba8d9e94fb1f28f0dd21fdec5
  • Rails 6 + Capistrano - 没有这样的 puma.sock 文件

    拜托 我有一个大问题10多个小时了 每当我使用 Capistrano 和 Puma 在 Rails 中运行应用程序部署并重新启动 nginx 时 当我尝试访问我的 Web 时 我会看到此错误 在此输入图像描述 https i stack i
  • php artisan migrate 命令错误:找不到驱动程序

    我的操作系统是windows Illuminate Database QueryException 找不到驱动程序 SQL 从 information schema tables 中选择 其中 table schema blog 且 tab
  • .net Framework 4 中的 nameof 表达式

    Visual Studio 2015 和 c 6 中引入了 nameof 表达式 nameof C 和 Visual Basic 参考 https msdn microsoft com en us library dn986596 28v
  • 浮点转换和性能

    我知道在浮点数和整数之间进行转换时可能会出现错误 但是性能如何 请忽略准确性问题 一般来说 如果我对不同算术类型的操作数 即不同的浮点类型 例如 float and double 和浮点 整数类型组合 例如float and int 是否存
  • 如何在 REST(Jersey) 中创建过滤器或处理程序来包装 JAX-RS 请求?

    我的 jax rs 应用程序中有一些资源 我想在 jax rs 请求进入由 javax ws rs Path 注释的资源之前验证它 那么 我如何为我的资源创建处理程序或过滤器 我搜索了很多网站 他们的建议是使用代理或 servlet 过滤器
  • Aurelia 验证:对同一属性应用一些关于更改的规则和一些关于模糊的规则

    我有一个值的输入字段 该值应该正好有 5 位数字 我想在立即输入数字以外的字符 onChange 时显示错误 但仅在模糊时显示字符串长度不足的错误 我的规则目前看起来是这样的 ValidationRules ensure myInput m
  • 根据要求在 Python/Matplotlib 中为热图着色

    我正在尝试制作具有指定颜色要求的热图 我想为数据设置一个间隔并判断为ok并将其着色为绿色 其余结果应着色为红色 有谁知道如何做到这一点吗 我附上了一个使用 pandas 和 matplotlib 的简单示例 以便更好地理解 import n
  • java.io.IOException:无效的密钥库格式

    有谁知道如何解决这个问题 我尝试了很多方法 但没有一个有效 当我单击更多详细信息时 我得到以下信息 at sun security provider JavaKeyStore engineLoad Unknown Source atsun
  • 数字字符串到整数列表?

    例如 我面临的任务是转换一串混合数字 1 3 5 8 10 我的目标是将这些数字作为整数放入列表中 我有知识和诀窍来分割字符串和 int 它们以将它们转换为整数 但问题来了how我正在做 我遇到的具体问题是循环遍历字符串 查找字符并将它们转
  • 空合并运算符覆盖

    我知道这样做是没有意义的 xstring ToLower xx 因为我打电话ToLower 在检查 null 之前被调用 有没有办法解决这个问题 保持语法整洁 我可以覆盖 字符串的运算符 以便它只调用ToLower when xstring
  • Android开放电话应用

    我只想打开 Android 设备的电话应用程序 我不想向该应用程序提供电话号码 只是想打开它 我正在使用手机应用程序的包名称来打开它 因为我可以使用下面的代码通过该包名称打开任何我想要的应用程序 Intent launchIntent ge
  • 在 Photoshop 脚本中打开和关闭多个图层

    我在 Photoshop 中有 6 个组 每个组内包含多个图层 我希望打开 关闭每个组中的图层以创建图像的每种可能的组合 有人能指出我正确的方向吗 我从来没有在 Photoshop 中编写过脚本 而是尝试自己解决这个问题 我自己对 CS5