嗨,我有一个非常具体的问题要解决。
我有不同层数的 Photoshop 文件。假设其中一个有 10 层,我不需要导出每一层,但最底层的是第一个文件。然后我需要导出合并的第一个和第二个(第一个之上的所有图层都将混合模式设置为屏幕),接下来是前三个合并,然后是四个,依此类推。
我不知道 Photoshop 中的脚本,也无法在 Google 中找到任何内容。任何帮助,将不胜感激。我使用 Photoshop CS5
嗨,我有一个非常具体的问题要解决。
我有不同层数的 Photoshop 文件。假设其中一个有 10 层,我不需要导出每一层,但最底层的是第一个文件。然后我需要导出合并的第一个和第二个(第一个之上的所有图层都将混合模式设置为屏幕),接下来是前三个合并,然后是四个,依此类推。
我不知道 Photoshop 中的脚本,也无法在 Google 中找到任何内容。任何帮助,将不胜感激。我使用 Photoshop CS5
据我了解,您有一个 Photoshop 文件。背景位于堆栈的底部。下一层,我们称它为第 1 层,然后是第 2 层等。第 1 层和第 2 层需要合并和导出。然后层 1,2 & 3 需要合并和导出。您没有提到背景是否需要与它们合并。无论如何,我正在假设图层需要与背景合并 - 如果不是这样的话,很容易改变。这是一个您想要的脚本:
app.preferences.rulerUnits = Units.PIXELS;
// call the source document
var srcDoc = app.activeDocument;
fileName = app.activeDocument.name;
var myDocName = fileName.substring(0,fileName.length -4)
var numOfLayers = srcDoc.layers.length;
hideEverything(srcDoc)
processLayers (srcDoc)
function processLayers (sourceDocument)
{
for (var i = numOfLayers -1; i >= 0 ; i--)
{
srcDoc.activeLayer = srcDoc.artLayers[i];
thisLayer = srcDoc.artLayers[i].name;
// duplicate the document
var id17396 = charIDToTypeID( "Dplc" );
var desc3299 = new ActionDescriptor();
var id17397 = charIDToTypeID( "null" );
var ref2177 = new ActionReference();
var id17398 = charIDToTypeID( "Dcmn" );
var id17399 = charIDToTypeID( "Ordn" );
var id17400 = charIDToTypeID( "Frst" );
ref2177.putEnumerated( id17398, id17399, id17400 );
desc3299.putReference( id17397, ref2177 );
var id17401 = charIDToTypeID( "Nm " );
desc3299.putString( id17401, thisLayer ); //change the name of the document
executeAction( id17396, desc3299, DialogModes.NO );
// Flatten the image
app.activeDocument.flatten();
// Set myFilePath and fileName to source path
myFilePath = srcDoc.path + '/' + app.activeDocument.name +'.png';
try
{
// save out the image
var pngFile = new File(myFilePath);
pngSaveOptions = new PNGSaveOptions();
pngSaveOptions.embedColorProfile = true;
pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;
activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
}
catch(e)
{
alert(e)
}
// close that saved png
app.activeDocument.close()
// select the document that's been open the longest
app.activeDocument = srcDoc;
}
}
function hideEverything(sourceDocument)
{
for (var i = numOfLayers -2; i >= 0 ; i--) // don't include background
{
srcDoc.artLayers[i].visible = false;
}
}