自动化 Photoshop 编辑并使用文件夹名称重命名 +600 个文件
Automating Photoshop to edit en rename +600 files with the name of the folder
我的 mac 上有超过 600 张产品图片已经剪下并编目在它们自己的文件夹中。它们都是 PSD,我需要一个脚本来执行以下操作。
- 获取文件夹的名称
- 获取所述文件夹中的所有 PSD
- 将它们按正确的顺序组合在一个大的 PSD 中(文件名按顺序保存为 1843、1845、1846,因此它们需要按该顺序打开)
- 保存 PSD
- 使用文件夹中的名称 + _1、_2、_3 将单独的图层保存为 PNG
我之前有过 Bash(前 Linux 用户)的经验,并在 Automator 中尝试了几个小时但没有成功。
欢迎来到 Stack Overflow。快速回答是肯定的,这可以通过脚本来完成。我什至建议分解成两个脚本,一个用于抓取并保存 PSD,第二个用于保存图层。
关于“组合”PSD 或“分离层”不是很清楚,只是我不知道它们是否不同 canvas 大小,您希望每个 PSD 的位置(x,y偏移和分层)请记住 none 使用时将您的文件放在我们面前以供参考。
简而言之,如果您写出您希望代码执行的伪代码,那么回答您的问题会更容易。
这里有一些代码片段可以帮助您入门:
这将打开一个文件夹并将所有 PSD 作为数组检索:
// get all the files to process
var folderIn = Folder.selectDialog("Please select folder to process");
if (folderIn != null)
{
var tempFileList = folderIn.getFiles();
}
var fileList = new Array(); // real list to hold images, not folders
for (var i = 0; i < tempFileList.length; i++)
{
// get the psd extension
var ext = tempFileList[i].toString();
ext = ext.substring(ext.lastIndexOf("."), ext.length);
if (tempFileList[i] instanceof File)
{
if (ext == ".psd") fileList.push (tempFileList[i]);
// else (alert("Ignoring " + tempFileList[i]))
}
}
alert("Files:\n" + fileList.length);
你可以用这个保存 png
function save_png(afilePath)
{
// Save as a png
var pngFile = new File(afilePath);
pngSaveOptions = new PNGSaveOptions();
pngSaveOptions.embedColorProfile = true;
pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;
activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
}
要打开 psd 只需使用
app.open(fileRef);
保存起来
function savePSD(afilePath)
{
// save out psd
var psdFile = new File(afilePath);
psdSaveOptions = new PhotoshopSaveOptions();
psdSaveOptions.embedColorProfile = true;
psdSaveOptions.alphaChannels = true;
activeDocument.saveAs(psdFile, psdSaveOptions, false, Extension.LOWERCASE);
}
我的 mac 上有超过 600 张产品图片已经剪下并编目在它们自己的文件夹中。它们都是 PSD,我需要一个脚本来执行以下操作。
- 获取文件夹的名称
- 获取所述文件夹中的所有 PSD
- 将它们按正确的顺序组合在一个大的 PSD 中(文件名按顺序保存为 1843、1845、1846,因此它们需要按该顺序打开)
- 保存 PSD
- 使用文件夹中的名称 + _1、_2、_3 将单独的图层保存为 PNG
我之前有过 Bash(前 Linux 用户)的经验,并在 Automator 中尝试了几个小时但没有成功。
欢迎来到 Stack Overflow。快速回答是肯定的,这可以通过脚本来完成。我什至建议分解成两个脚本,一个用于抓取并保存 PSD,第二个用于保存图层。
关于“组合”PSD 或“分离层”不是很清楚,只是我不知道它们是否不同 canvas 大小,您希望每个 PSD 的位置(x,y偏移和分层)请记住 none 使用时将您的文件放在我们面前以供参考。 简而言之,如果您写出您希望代码执行的伪代码,那么回答您的问题会更容易。
这里有一些代码片段可以帮助您入门: 这将打开一个文件夹并将所有 PSD 作为数组检索:
// get all the files to process
var folderIn = Folder.selectDialog("Please select folder to process");
if (folderIn != null)
{
var tempFileList = folderIn.getFiles();
}
var fileList = new Array(); // real list to hold images, not folders
for (var i = 0; i < tempFileList.length; i++)
{
// get the psd extension
var ext = tempFileList[i].toString();
ext = ext.substring(ext.lastIndexOf("."), ext.length);
if (tempFileList[i] instanceof File)
{
if (ext == ".psd") fileList.push (tempFileList[i]);
// else (alert("Ignoring " + tempFileList[i]))
}
}
alert("Files:\n" + fileList.length);
你可以用这个保存 png
function save_png(afilePath)
{
// Save as a png
var pngFile = new File(afilePath);
pngSaveOptions = new PNGSaveOptions();
pngSaveOptions.embedColorProfile = true;
pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;
activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
}
要打开 psd 只需使用
app.open(fileRef);
保存起来
function savePSD(afilePath)
{
// save out psd
var psdFile = new File(afilePath);
psdSaveOptions = new PhotoshopSaveOptions();
psdSaveOptions.embedColorProfile = true;
psdSaveOptions.alphaChannels = true;
activeDocument.saveAs(psdFile, psdSaveOptions, false, Extension.LOWERCASE);
}