自动化Photoshop以使用文件夹名称编辑+ 600个重命名文件

问题描述

我的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);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...