用于导出图层组合的 Photoshop 脚本

Posted

技术标签:

【中文标题】用于导出图层组合的 Photoshop 脚本【英文标题】:Photoshop script to export layer combinations 【发布时间】:2015-07-03 11:49:44 【问题描述】:

我想制作一个 Photoshop 脚本,让我可以将一组中的所有五个图层导出为 png 文件 - 与其他 2 个组的每一层相结合。

这有点模糊,所以我会尝试说明我想要什么 完成。有基本组(红色,蓝色,黄色,橙色, 绿色)。然后是第二组,包含第 1,2 和 3 层。 然后是第三组,包含 a、b、c 和 d。

我想 能够导出 1_red_a.png, 1_red_b.png, 1_red_c.png, 1_red_d.png, 1_blue_a.png, 1_blue_b.png, ...

我对 Photoshop 脚本没有太多经验。这是可以实现的吗?如果是这样,有人准备帮助我吗?

【问题讨论】:

你说的“结合”是什么意思?并排?亮度叠加?你真的想要 60 个输出图像吗?您使用的是什么操作系统?提供一个示例图片怎么样? 我现在不在家,所以现在不可能提供示例图像。然而,我在 Windows 上工作,我确实想要很多输出文件。我的意思是,我希望它们同时可见。 【参考方案1】:

我想我已经知道你想要什么了。我发现 ExtendScript 编写代码非常尴尬,并且倾向于使用更强大的日常工具在 Photoshop 之外执行自动化操作。我会选择 ImageMagick 和 bash。 ImageMagick 是免费的,可用于 Windows,将两个图像合成在另一个之上的基本命令是

convert image1.png image2.png -composite result.png

当然,您可以将任何或所有 PNG 更改为 TIFJPG 或任何您喜欢的。

因此,对于您的问题,我制作了一个包含几个组的示例文件来展示这个概念,如下所示:

Photoshop 文件可用here。

放大Layers 调色板(上图右侧)查看我制作的两组。

然后转到文件->脚本->将图层导出到文件,然后选择如下选项:

这将为您导出以下文件:

layers_0000s_0002_Layer A.png
layers_0000s_0001_Layer B.png
layers_0000s_0000_Layer C.png       
layers_0001s_0003_Layer 1 - Red.png
layers_0001s_0002_Layer 2 - Green.png
layers_0001s_0001_Layer 3 - Blue.png
layers_0001s_0000_Layer 4 - Magenta.png

注意格式是xxx<GROUP>s_xxx<LAYER>xxx.png

现在您可以使用此bash 脚本轻松创建组的所有排列。我认为 Windows BATCH 文件会非常相似 - 虽然我只在胁迫下做 Windows !!!

#!/bin/bash
i=0
# Iterate over Group 0 files
for a in *0s_*.png; do
   j=0
   # Iterate over Group 1 files
   for b in *1s_*.png; do
      convert "$a" "$b" -composite out_$i_$j.png
      ((j++))
   done
   ((i++))
done

它为您提供这些输出文件:

out_0_0.png
out_0_1.png
out_0_2.png
out_0_3.png
out_1_0.png
out_1_1.png
out_1_2.png
out_1_3.png
out_2_0.png
out_2_1.png
out_2_2.png
out_2_3.png

只是为了好玩,我把它们放在一个蒙太奇中,你会得到这个:

请注意,如果您有 3 个组,您将需要在脚本中添加第三个内部循环,将 3 个图像合成在一起的命令将更像这样(因为-composite 选项采用了前面的两个图像):

convert image1.png image2.png -composite image3.png -composite result.png

或者,你可能会发现你可以使用

convert -background none image1.png image2.png image3.png -flatten result.png

【讨论】:

哇 :p 感谢所有的努力!我回家后会试一试,如果成功了,请告诉你。在你的解释之后,我认为我不会有任何重大问题:) 如果您没有安装 ImageMagick,而是从这里下载它imagemagick.org/script/binary-releases.php - 我可能会考虑使用最后列出的一个 - 零安装和零配置的那个,然后,如果你不喜欢或不想要它,您可以通过删除安装它的目录来非常简单地删除它。 @MarkSetchell:马克,你想添加一个链接到你为答案创建的示例 Photoshop 文件吗? @KurtPfeifle 是的,我已经提供了文件 - 好建议。谢谢。 我最终尝试以另一种方式完成事情,而不是制作大量图像,我现在将它们组合到应用程序本身中。但是,我以后很可能会遇到某些问题。所以这可能仍然派上用场。感谢您的大力支持!【参考方案2】:

Photoshop Composition Composer 将创建***groups 中包含的任何内容的组合。 group 的名称和属于它的 layer 连接在一起将是您的文件名。

用法

    请参阅下面的示例和预览以了解其工作原理 下载解压photoshopCompositionComposerjsx-file 打开您的项目并导航到File > Scripts > Browse... 浏览并加载下载的jsx文件

示例

图层

Group 动物。 Layer狗_ Group猫_ Group 背景。 Layer海_ Group空格_ LayerunderWater_

结果合成

    animals.dog_background.sea_ animals.dog_background.space_ animals.dog_background.underWater_ animals.cat_background.sea_ animals.cat_background.space_ animals.cat_background.underWater_

预览

【讨论】:

以上是关于用于导出图层组合的 Photoshop 脚本的主要内容,如果未能解决你的问题,请参考以下文章

导出每个图层集的JPEG文件(带有PyQt的Photoshop Python)

PhotoShop 脚本学习07 新建文字图层

导出每个图层的JPEG文件set With option(Photoshop Python With PyQt)

将图层名称复制到 Photoshop 中的文本框的脚本

Photoshop 脚本 - 如何在 2 个链接图层组之间切换

如何在 jsx Photoshop 脚本中提取图层旋转(变换)?