问题描述
我的Mac上有+600个产品图片已被裁剪并归类到自己的文件夹中。它们都是PSD,我需要一个脚本来执行以下操作。
- 获取文件夹名称
- 获取所述文件夹中的所有PSD
- 以正确的顺序将它们组合在一个大PSD中(文件名依次保存为1843、1845、1846,因此需要按该顺序打开)
- 保存该PSD
- 使用文件夹+ _1,_2,_3中的名称将单独的图层另存为PNG
我以前在Bash(以前的Linux用户)中有经验,并且在Automator中尝试了几个小时,但没有成功。
解决方法
欢迎使用堆栈溢出。快速的答案是,可以通过脚本来完成。我什至建议将其分解为两个脚本,一个用于获取和保存PSD,另一个用于保存图层。
关于“组合” PSD或“单独的图层”还不是很清楚,只是我不知道它们是否是不同的画布大小,您希望将每个PSD放置在哪里(x,y偏移和分层)。使用时,请在我们面前查阅您的文件。 简而言之,如果您写出什么是伪代码,那么您希望代码能够执行此操作,从而更容易回答问题。
以下是一些代码片段,可帮助您入门: 这将打开一个文件夹并以数组的形式检索所有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,Extension.LOWERCASE);
}